2009-12-02 6 views
2

Я хочу вызвать действие контроллера с другого контроллера.Вызов контроллера из другого

Как я могу это сделать?

Несколько лет назад были компоненты, но они больше не доступны.

С наилучшими пожеланиями

ответ

2

Вы не можете вызвать метод действия другого контроллера.
У вас есть только два решения.

Выполнение перенаправления на соответствующий URL.

redirect_to '/' 

Но, конечно, если у вас есть данные из формы, вы их теряете.

Извлечь действие с другого контроллера.

render 'controller/action' 

Вы сохраняете все свои данные (параметры и все такое).
Но вам нужно сделать все, что сделает другой контроллер.

Одним из решений, позволяющим избежать повторения строк кода, было бы иметь библиотечный метод, определяющий каждый необходимый вам вид, и использовать этот метод в двух контроллерах.

2

redirect_to является предпочтительным способом сделать это.

Если вы хотите просто визуализировать представление другого действия логикой текущего действия, вы можете передать представление в качестве опции для рендеринга.

render 'other_controller/action' 
+1

Но это будет отправлять состояние HTTP для перенаправления. Это не то, что я ищу. – brainfck

Смежные вопросы