Как передать действие другому контроллеру в Rails?

Rails 4 - у меня есть действие, которое обрабатывает такие маршруты, как www.site.com/catalog/shoes/sport/ABC123 для продукта и www.site.com/catalog/shoes/sport для категории. Проблема в том, что мне нужно отображать некоторые SEO-оплачиваемые ссылки (не мой выбор, я просто должен) в формате www.site.com/href, и эта ссылка должна быть обработана как некоторая категория продукта. Это не единственный случай - в будущем могут появиться другие "короткие" ссылки, указывающие на другие части моего сайта.

Когда я использовал Symfony, я мог просто написать $this->forward('controller', 'action') и получить вывод другого контроллера при сохранении короткого маршрута, но в Rails я вижу только redirect_to, и он не сохраняет короткий URL?

Предполагая, что у меня есть маршрут get ':href' => 'index#simple', as: :simple, как мне передать выполнение другому контроллеру (или просто вызвать метод контроллера?), сохранив исходный маршрут? - По "рельсам", конечно

Спасибо


person Eugene    schedule 15.12.2013    source источник
comment
Итак, я нашел частичное решение для своих нужд - я добавил ProductSet.find(:all).each do |ps| get #{ps.href}, :to =› catalog#category, :set =› ps.href end to route.rb — теперь мне интересно, как мне динамически перезагружать маршруты при добавлении нового ProductSet?   -  person Eugene    schedule 15.12.2013


Ответы (1)


Вы можете просто использовать «redirect_to controller_action_path» / redirect_to «/controller/action» из вашего действия контроллера.

person xvidun    schedule 15.12.2013