Rails: overwrite_params с вложенными параметрами - PullRequest
1 голос
/ 29 июня 2009

Я использую опцию: overwrite_params в помощнике link_to. Но у меня проблемы с перезаписью значений вложенных параметров. Вот некоторый код:

С:

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], поэтому я не получаю перезаписи.

Любая помощь?

Заранее спасибо.

1 Ответ

1 голос
/ 29 июня 2009

Здесь можно сделать свежий выстрел.
Можете ли вы попробовать это:

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] ||= {}

где-то в вашем коде.

Еще раз, это, вероятно, не лучшее решение.
Надеюсь, это поможет вам что-то выяснить или продолжать двигаться, пока кто-нибудь не даст лучший ответ :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...