在rails redirect_to中传递参数

时间:2009-09-16 00:02:39

标签: ruby-on-rails

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

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

如果我想传递一些表格数据等其他参数如何实现呢?

修改

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

redirect_to action: action_name, id: 3

10 个答案:

答案 0 :(得分:160)

只需将它们附加到选项中:

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

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

答案 1 :(得分:76)

如果您使用的是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')

答案 2 :(得分:43)

如果您有一些表单数据,例如发送到home#action,现在您想将它们重定向到house #act,同时保留参数,您可以这样做

redirect_to act_house_path(request.parameters)

答案 3 :(得分:38)

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

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

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

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

答案 4 :(得分:28)

redirect_to new_user_path(:id => 1, :contact_id => 3, :name => 'suleman')

答案 5 :(得分:6)

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

答案 6 :(得分:3)

<强>的routes.rb

 match 'controller_name/action_name' => 'controller_name#action_name', via: [:get, :post], :as => :abc

您想要使用参数重定向的任何控制器如下所示:

redirect_to abc_path(@abc, id: @id), :notice => "message fine" 

答案 7 :(得分:2)

如果您正在寻找一种传递其他URL参数(而不是控制器,操作,ID等)的方法,那么以下是一种健壮的方法:

object_path(@object, params: request.query_parameters)

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

答案 8 :(得分:0)

沿路径行进,走params,然后返回:

redirect_to controller: "client", action: "get_name", params: request.query_parameters and return

答案 9 :(得分:0)

从Rails 6开始,您可以简单地调用redirect_to,然后调用您希望重定向的路径,例如home_path,然后传递键值对的哈希值。

示例:

redirect_to home_path(name: 'Jason', needs: 'help with rails', help: true)

此后,您将能够从params哈希中检索这些值。

ex

params[:name]

检索字符串“ Jason”