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

StackOverflow https://stackoverflow.com/questions/448521

Вопрос

В настоящее время я повторно использую частичное в двух разных представлениях.

Просмотреть A

Вид B

Частичное относится к модели A, но имеет связь с моделью B, поэтому оно применимо и к модели B.

Он содержит форму, и когда данные отправляются, он всегда перенаправляет пользователя на просмотр A.Однако, когда я отправляю форму из представления B, я хотел бы, чтобы меня перенаправили обратно в Представление B вместо формы A.

Причина, по которой он перенаправляется прямо сейчас на просмотр A, заключается в том, что это модель, к которой принадлежит эта форма.Поэтому при публикации он связывается с контроллером A и использует перенаправление, переводящее пользователя на a_url.

Как я могу сообщить моей форме (или, более того, действию контроллера) перенаправить пользователя обратно туда, откуда он пришел?

Спасибо!

Это было полезно?

Решение

Решаемая.

Я добавил скрытое поле в свою форму, которое содержало имя контроллера, на котором отображалась часть, а затем мой блок response_to определил, куда отправить пользователя.

Просмотр кода:

<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>

Мой код контроллера:

if params[:submitted_from] == 'A'
  redirect_to a_url
else
  redirect_to b_url
end

Другие советы

Вместо использования скрытого тега вы можете захотеть разместить его в сеансе:

session[:submitted_from] = new_model_url

и в другом действии..

redirect_to(session[:submitted_from])
session[:submitted_from] = nil

Довольно легко переключить переменные формы, в то время как подделать сеанс может быть сложнее (но не невозможно).Я бы пошел этим путем, если бы это было мое приложение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top