轨道上的红宝石 - 如何最轻松地通过路由帮助程序转发参数



这显然不起作用:

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))

这使您可以简单地指定要发送的参数(它排除了其余的),而无需大量代码。

最新更新