这显然不起作用:
redirect_to post_path(@post, :params => params)
由于 Rails 路由助手不允许您直接设置参数哈希(根据我所阅读的内容)。
这可能会带来一些问题:
redirect_to post_path(@post, params)
由于您还将转发 :controller 和 :action 参数,这将带您到您来自的相同控制器和操作。这通常不是您想要的。
这有效,但还不够,因为它很麻烦,因为将所有参数(:action 和 :controller 除外)设置为现有参数需要大量代码:
redirect_to post_path(@post, {:someparameter => params[:someparameter]})
那么,最简单和最简单的方法是什么?
您可以轻松转发除要排除的参数之外的所有参数,如下所示:
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))
这使您可以简单地指定要发送的参数(它排除了其余的),而无需大量代码。