Rails collection_select не работает, но эквивалентный select с options_from_collection_for_select делает - PullRequest
0 голосов
/ 10 августа 2011

Вот мой фрагмент кода, который работает точно так, как задумано:

<%= f.select(:other_model_id, 
             options_from_collection_for_select(
               OtherModel.all, 
               :id, 
               :full_name,
               { :selected => @this_model.other_model_id} )) %>

Но по какой-то причине это не работает:

<%= f.collection_select :this_model, :other_model_id, 
                         OtherModel.all, :id, :full_name %>

Есть ошибка, которую я получаю:

неопределенный метод `слияние 'для: полное_имя: символ

Есть предложения? Тот факт, что: full_name корректно работает с рабочим кодом, заставляет меня поверить, что я испортил синтаксис в упрощенном коде collection_select и что проблема не в другом.

1 Ответ

3 голосов
/ 10 августа 2011

Я думаю, что вы смешиваете два разных collection_select метода. Вы вызываете FormBuilder#collection_select с использованием аргументов FormOptionsHelper#collection_select. Может быть, вы хотите это:

<%= f.collection_select :other_model_id, OtherModel.all, :id, :full_name %>

Или, может быть, это:

<%= collection_select :this_model, :other_model_id, OtherModel.all, :id, :full_name %>

В конечном итоге вы пытаетесь вставить :full_name в аргумент options, но это должен быть хэш, отсюда и жалоба на "метод не merge".

...