这显然不起作用:
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]})
那么,最简单,最简单的方法是什么?
答案 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))
这使您只需指定要发送的参数(不包括其余参数),而无需大量代码。