我目前正在重新使用两种不同观点的部分内容。
查看A
查看B
部分属于模型A但与模型B有关联,所以它也适用于模型B.
它包含一个表单,当提交数据时,它总是将用户重定向到View A.但是,当我从View B提交表单时,我希望被重定向回View B而不是表单A.
它现在重定向到View A的原因是因为这是该表单所属的模型。因此,当发布时,它会与控制器A进行通信并使用重定向将用户带到a_url。
如何告诉我的表单(或更多控制器操作)将用户重定向回他们来自哪里?
谢谢!
答案 0 :(得分:2)
解决。
我在表单中添加了一个隐藏字段,其中包含部分呈现位置的控制器名称,然后我的respond_to块确定了将用户发送到何处。
查看代码:
<%= hidden_field_tag 'submitted_from', "#{controller.controller_name}" %>
我的控制器代码:
if params[:submitted_from] == 'A'
redirect_to a_url
else
redirect_to b_url
end
答案 1 :(得分:0)
您可能希望将其放在会话中,而不是使用隐藏标记:
session[:submitted_from] = new_model_url
并在另一个行动..
redirect_to(session[:submitted_from])
session[:submitted_from] = nil
切换表单变量非常容易,但伪造会话可能更难(但并非不可能)。如果这是我的申请,我会走这条路。