我目前重新使用部分上的两个不同的视图。

  

查看A

     

查看乙

在局部属于模型A,但与B型的关联,因此是适用于模型B为好。

它包含一个形式,并且数据被提交时,它总是将用户重定向到查看A.然而,当我从视图B提交表单,我想被重定向回视图B代替A型

它重定向现在要查看的原因是因为这是这种形式属于典型的。如此张贴时,会谈到控制器A,并使用重定向用户带到a_url。

我如何知道我的形式(或更多,使控制器动作),将用户重定向回到他们原来的地方?

谢谢!

有帮助吗?

解决方案

解决。

我添加了一个隐藏字段到我的形式包含在部分被渲染,然后我的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

其他提示

而不是使用一个隐藏的标签,你可能希望将这个会话:

session[:submitted_from] = new_model_url

和在其他动作..

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

这是很容易切换出形式变量,而它可能更难(但不是不可能)伪造的会话。我会走这条路,如果它是我的应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top