多个视图的相同部分返回到从中调用的任何视图

时间:2009-01-15 21:25:09

标签: ruby-on-rails ruby forms partials

我目前正在重新使用两种不同观点的部分内容。

  

查看A

     

查看B

部分属于模型A但与模型B有关联,所以它也适用于模型B.

它包含一个表单,当提交数据时,它总是将用户重定向到View A.但是,当我从View B提交表单时,我希望被重定向回View B而不是表单A.

它现在重定向到View A的原因是因为这是该表单所属的模型。因此,当发布时,它会与控制器A进行通信并使用重定向将用户带到a_url。

如何告诉我的表单(或更多控制器操作)将用户重定向回他们来自哪里?

谢谢!

2 个答案:

答案 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

切换表单变量非常容易,但伪造会话可能更难(但并非不可能)。如果这是我的申请,我会走这条路。