我正在使用link_to帮助程序中的: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} 我不会丢失值,但如果url中存在params[:filter][:editorials],则会附加另一个params[:filter][:editorials],因此我不会得到任何覆盖。
有什么帮助吗?
提前谢谢。
发布于 2009-06-29 04:29:52
在这里进行一次长传。
你能试试这个吗:
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] ||= {}在你的代码中的某个地方。
再一次,这可能不是最好的解决方案。
希望它能帮助你弄清楚一些事情,或者继续前进,直到有人给出更好的答案:)
https://stackoverflow.com/questions/1056512
复制相似问题