Мы переходим из Rails 3.2.13 в Rails 4.0.13.grouped_collection_select - изменения group_method с Rails 3 до 4
Мы используем помощник Rails grouped_collection_select
для гнездования <optgroup>
s.
Я заметил, что из Rails 3.2.13 - 4.0.2 произошли изменения в источнике.
http://apidock.com/rails/v4.0.2/ActionView/Helpers/FormOptionsHelper/grouped_collection_select
Наше использование метода не работает в настоящее время.
Вот наш код:
<%= f.grouped_collection_select :location_id, @participating_businesses, :"active_locations(#{current_user.id})", :name, :id, :name, {prompt: t('.prompt_select_location')}, class: 'location-selector form-control' %>
Здесь ошибка:
ActionView::Template::Error (undefined method `active_locations(7)' for #<ParticipatingBusiness:0x005583478f1f90>):
Теперь стало ясно, что они изменили посланный как метод GET в.
Я предполагаю, что в настоящее время они захватывают опцию group_method
и помещают ее непосредственно в send(:group_method)
, что объясняет указанную выше ошибку.
Однако, как я могу передать аргумент моему group_method
, который полагается на сеанс (также известный как current_user).
Рассматривая источник, я не думаю, что это вполне возможно.
Должен ли я смотреть на переписывание этой работы с нашей целью, без помощников или чуть более ручной?
Неужели кто-нибудь сталкивается с тем же вопросом?
Учитывая вы знаете, он просто передает 'group_method' переменную непосредственно отправить, что, если вы пытались использовать' [: active_locations, current_user.id] 'вместо этого? –
Это довольно умное исправление, однако я уже пробовал и получил 'ActionView :: Template :: Error ([: active_locations, 7] не символ)'. – fbelanger
darn:/было бы неплохо, если бы это Just Worked ... Возможно, вам придется запросить его для Rails. Похоже, что обычный 'collection_for_select' может принимать' Proc', но я видел проблему, с которой сгруппированная версия работает не так. –