Rails:使用嵌套参数的overwrite_params

时间:2009-06-29 04:02:49

标签: ruby-on-rails ruby

我在link_to helper中使用:overwrite_params选项。但是我在覆盖嵌套参数值时遇到了问题。这里有一些代码:

使用:

link_to book_item.editorial, :overwrite_params  => {:filter => {[editorials.id] => book_item.editorial.id.to_s}}

替换完整的params[:filter]值(即我丢失了params[:filter][:author]值)

如果我使用:

link_to book_item.editorial, :overwrite_params  => {'filter[editorials.id]' => book_item.editorial.id.to_s} 

我没有丢失值,但如果网址中存在params[:filter][:editorials],则会附加另一个params[:filter][:editorials],因此我不会覆盖任何内容。

任何帮助?

提前致谢。

1 个答案:

答案 0 :(得分:1)

在这里放一个looong射击。
你能试试这个:

link_to book_item.editorial, :overwrite_params  => { :filter => params[:filter].merge({[editorials.id] => book_item.editorial.id.to_s}) }

然后你可能需要在某处初始化params [:filter],以确保你不运行nil.merge()

只做

params[:filter] ||= {}

代码中的某处。

再一次,这可能不是最佳解决方案 希望它可以帮助你解决问题或继续前进,直到有人给出更好的答案:)