Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 多个视图上的同一部分返回到从中调用它的任何视图_Ruby On Rails_Ruby_Forms_Partials - Fatal编程技术网

Ruby on rails 多个视图上的同一部分返回到从中调用它的任何视图

Ruby on rails 多个视图上的同一部分返回到从中调用它的任何视图,ruby-on-rails,ruby,forms,partials,Ruby On Rails,Ruby,Forms,Partials,我目前正在两个不同的视图上重新使用一个部分 查看A 视图B 该部分属于模型A,但与模型B关联,因此也适用于模型B 它包含一个表单,当提交数据时,它总是将用户重定向到视图a。但是,当我从视图B提交表单时,我希望被重定向回视图B而不是表单a 它现在重定向到视图的原因是因为该表单所属的模型。因此,当发布时,它与控制器A对话,并使用重定向将用户带到一个url 我如何告诉我的表单(或者更多的控制器操作)将用户重定向回他们的来源 谢谢 已解决 我在表单中添加了一个隐藏字段,其中包含渲染部分的控制器名称,然后

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

查看A

视图B

该部分属于模型A,但与模型B关联,因此也适用于模型B

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

它现在重定向到视图的原因是因为该表单所属的模型。因此,当发布时,它与控制器A对话,并使用重定向将用户带到一个url

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

谢谢

已解决

我在表单中添加了一个隐藏字段,其中包含渲染部分的控制器名称,然后我的respond_to block决定将用户发送到哪里

查看代码:

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

您可能希望将其放置在会话中,而不是使用隐藏标记:

session[:submitted_from] = new_model_url
在另一个动作中

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

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