我在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]
,因此我不会覆盖任何内容。
任何帮助?
提前致谢。
答案 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] ||= {}
代码中的某处。
再一次,这可能不是最佳解决方案 希望它可以帮助你解决问题或继续前进,直到有人给出更好的答案:)