如何最轻松地通过路线助手转发params?

时间:2011-05-13 13:41:53

标签: ruby-on-rails parameters routing

这显然不起作用:

redirect_to post_path(@post, :params => params)

由于Rails路由助手不允许你直接设置params哈希(从我读过的)。

这可能会带来一些问题:

redirect_to post_path(@post, params)

由于您将转发:controller和:action参数,这将带您进入相同的控制器和操作。这通常不是你想要的。

这是有效的,但是不够,因为它很麻烦,因为需要大量的代码来将所有参数(除了:action和:controller)设置为现有的参数:

redirect_to post_path(@post, {:someparameter => params[:someparameter]})

那么,最简​​单,最简单的方法是什么?

1 个答案:

答案 0 :(得分:9)

您可以轻松转发除要排除的参数之外的所有参数,例如:

redirect_to post_path(@post, params.to_hash.except(:controller, :action))

但这可能会让你仍然通过发送:authenticity_token,:_ method和其他参数,如:id,如果你有一个嵌套资源,你可能不需要。

因此,似乎这是最简单的方法,对于大多数用途来说:

redirect_to post_path(@post, params.to_hash.slice(:someparameter, :anotheparameteryouwant))

这使您只需指定要发送的参数(不包括其余参数),而无需大量代码。