Mag*_*gne 2 parameters routing ruby-on-rails
这显然不起作用:
redirect_to post_path(@post, :params => params)
Run Code Online (Sandbox Code Playgroud)
由于Rails路由助手不允许你直接设置params哈希(从我读过的).
这可能会带来一些问题:
redirect_to post_path(@post, params)
Run Code Online (Sandbox Code Playgroud)
因为您将转发:controller和:action参数,这将带您进入相同的控制器和您来自的操作.这通常不是你想要的.
这是有效的,但是不够,因为它很麻烦,因为需要大量的代码来将所有参数(除了:action和:controller)设置为现有的params:
redirect_to post_path(@post, {:someparameter => params[:someparameter]})
Run Code Online (Sandbox Code Playgroud)
那么,最简单,最简单的方法是什么?
您可以轻松转发除要排除的参数之外的所有参数,如下所示:
redirect_to post_path(@post, params.to_hash.except(:controller, :action))
Run Code Online (Sandbox Code Playgroud)
但这可能会让你仍然通过发送:authenticity_token,:_ method和其他参数,如:id,如果你有一个嵌套资源,你可能不想要.
因此,似乎这是最简单的方法,对于大多数用途来说:
redirect_to post_path(@post, params.to_hash.slice(:someparameter, :anotheparameteryouwant))
Run Code Online (Sandbox Code Playgroud)
这让您只需指定要发送的参数(不包括其余参数),而无需大量代码.
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |