如何将redirect_to()与rails 3中当前params []数组中的所有内容一起使用?

时间:2011-02-03 07:25:28

标签: ruby-on-rails ruby-on-rails-3

我想发送redirect_to函数所有当前页面的参数,而不知道各个参数。特定页面上的参数在数量上是可变的,并且在开发期间并不总是已知的。到目前为止,我只找到了发送已知参数和值的示例。

希望执行此操作:

redirect_to named_path, :notice => 'Some notice.', :params => params

不希望执行此操作:

redirect_to named_path, :notice => 'Some notice.', :param1 => "v1", :param2 => "v2", ...

TIA!

3 个答案:

答案 0 :(得分:1)

这可行:(未测试)

redirect_to named_path, params.merge({ :notice => 'Some notice' })

我们的想法是根据原始redirect_to哈希创建params 哈希的最后一个参数,并合并任何其他值。

答案 1 :(得分:1)

您可以使用

  

redirect_to named_pa​​th(params.merge(:notice =>'some notice。'))

你甚至可以改变参数,使用params.merge()以及他的正常行为删除一些参数:)

答案 2 :(得分:0)

您可以使用以下内容向当前路径添加更多参数:

redirect_to request.params.merge({new_params: 'foo'})

此外,您可以使用此代码将带有新参数的所有当前参数传递到新路径:

redirect_to new_path(request.params.merge({new_params: 'foo'}).except(:action, :controller))

paramsActionController::Parameters的一个实例。因此,它无法转换为哈希值,也不支持.merge方法。因此,请改用request.params