当前位置:  开发笔记 > 后端 > 正文

在rails redirect_to中传递参数

如何解决《在railsredirect_to中传递参数》经验,为你挑选了7个好方法。

我们如何在rails中的redirect_to中传递参数?我知道我们可以使用这个传递id:

redirect_to :action => action_name,:id => 3

如果我想传递一些表格数据等附加参数怎么实现呢?

编辑:

对于Ruby 2语法,您必须将上面的代码段更新为:

redirect_to action: action_name, id: 3

小智.. 166

只需将它们附加到选项:

redirect_to controller: 'thing', action: 'edit', id: 3, something: 'else'

会产量 /thing/3/edit?something=else



1> 小智..:

只需将它们附加到选项:

redirect_to controller: 'thing', action: 'edit', id: 3, something: 'else'

会产量 /thing/3/edit?something=else


您无法使用POST重定向.从3xx定义下的HTTP 1.1文档:"当且仅当第二个请求中使用的方法是GET或HEAD时,所需的操作可由用户代理执行,而不与用户交互." 扩展您真正想要实现的目标,我们可以将您推向正确的方向.

2> Sohan..:

如果您使用的是RESTful资源,则可以执行以下操作:

redirect_to action_name_resource_path(resource_object, param_1: 'value_1', param_2: 'value_2')

or
#You can also use the object_id instead of the object
redirect_to action_name_resource_path(resource_object_id, param_1: 'value_1', param_2: 'value_2')

or
#if its a collection action like index, you can omit the id as follows
redirect_to action_name_resource_path(param_1: 'value_1', param_2: 'value_2')

#An example with nested resource is as follows:
redirect_to edit_user_project_path(@user, @project, param_1: 'value_1', param_2: 'value_2')



3> v4r..:

如果您有例如发送到家里#行动某种形式的数据,现在要重定向他们的房子#的行为,同时保持参数,你可以这样做

redirect_to act_house_path(request.parameters)


您可以使用合并方法.例如:`redirect_to act_house_path(request.parameters.merge(key:"value"))`
合并后,您还可以使用except方法排除不需要的参数:`redirect_to act_house_path(request.parameters.except(:authenticity_token,:controller,:action,:utf8,:commit)`

4> 小智..:

您可以使用flash参数将任意对象传递给模板.

 redirect_to :back, flash: {new_solution_errors: solution.errors}

然后通过哈希在模板中访问它们.

<% flash[:new_solution_errors].each do |err| %>


这是不好的做法.此方法滥用flash对象,用于用户消息传递.更好的方法是在会话中存储任意参数,然后在完成后从会话中清除这些参数.

5> Muhammad Sul..:
redirect_to new_user_path(:id => 1, :contact_id => 3, :name => 'suleman')



6> 小智..:
redirect_to :controller => "controller_name", :action => "action_name", :id => x.id


能否请您提供更多解释.只是一个代码示例是不够的.

7> Abram..:

如果您正在寻找一种传递其他URL参数(而不是控制器,操作,ID等)的方法,则可以使用以下可靠的方法:

object_path(@object, params: request.query_parameters)

这将传递utm参数或您不想丢失的任何其他附加参数。

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有