Использование формы в нескольких местах - контроллер должен перенаправить в другое место в зависимости от того, откуда поступил запрос - PullRequest
2 голосов
/ 20 сентября 2011

У меня есть форма для добавления сотрудника.

Форма впервые используется, когда учетная запись создается в последовательности просмотра, чтобы помочь пользователю настроить свою учетную запись.

Этозатем используется в другом месте, как только учетная запись уже настроена.

Эти два используют разные макеты и контроллеры, поэтому имеют разные URL-адреса.Однако, когда форма отправлена, они оба в настоящее время вызывают один и тот же контроллер # create.Теперь, если форма отправлена ​​из области настройки, она должна перенаправиться на один URL после вызова действия create.Он должен перейти в другое место, если он вызывается из основного интерфейса приложения (без настройки).

Какой самый простой способ настроить это?

Ответы [ 2 ]

1 голос
/ 01 августа 2012

Общий консенсус заключается в реализации метода, который хранит URL-адрес, к которому вы хотите вернуться в сеансе.Например, сохраните URL-адрес в session[:return_to], а в действии вашего контроллера используйте redirect_to session[:return_to].

Очевидно, я упрощаю это, и вам нужно что-то более надежное, обернутое, скажем, перед фильтром, которыйтезисы управления session[:return_to].См. Эти сообщения SO для идей:

Перенаправление из действия обновления на реферер редактирования

Правильное выполнение redirect_to: обратно в Ruby on Rails, когда реферернедоступно

В качестве альтернативы, один из простых подходов - просто добавить целевой URL для перенаправления в качестве скрытого параметра формы, например, hidden_field 'redirect_to', :value => foo_path (мой синтаксис может быть неправильным).Ваше повторно использованное действие будет просто redirect_to params[:redirect_to].

. Я думал об этом на пути к работе, и должен быть драгоценный камень или какой-то лучший «декларативный» способ приблизиться к действию контроллера, перенаправляет / рендерит, который дополняет повторное использование,Я просто не могу думать о каких-либо драгоценных камнях на макушке.Время творить?

0 голосов
/ 20 сентября 2011

символ: назад является простым ответом: redirect_to :back

Более подробно обсуждается здесь: Правильно делает redirect_to: обратно в Ruby on Rails, когда реферер недоступен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...