Как перенаправить несколько действий на одно действие при сохранении СУХОГО? - PullRequest
2 голосов
/ 24 июня 2009

У меня есть OptionsController, который содержит действие account. Соответствующее представление имеет три формы, которые публикуют три различных действия: update_profile, update_user и change_password. Каждое действие выполняется и затем должно перенаправляться обратно на action, где представление снова устанавливается и отображается.

Я пытался быть СУХИМЫМ и создал after_filter для перенаправления:

after_filter( :only => [:change_password, :update_profile, :update_user] ) do |controller|
  controller.send(:redirect_to, :action => :account)
end

Однако, это, кажется, не вызывается; скорее, действие жалуется, что его взгляд не может быть найден.

Template is missing
Missing template options/update_user.erb in view path app/views

Есть ли способ, которым я могу сделать это СУХОЙ, или я должен просто прикрепить вызов redirect_to в каждом из трех действий?

Ответы [ 2 ]

8 голосов
/ 24 июня 2009

просто поставьте вызов redirect_to в каждом из действий. Существует тонкая грань между СУХОЙ и непостижимой магией. Я чувствую, что пытаться сделать что-то вроде after_filter или что-то еще, что неочевидно разрушает ожидаемое поведение действия, вероятно, слишком много волшебства.

2 голосов
/ 24 июня 2009

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

...