以下是我的代码段完全符合预期:
<%= 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 %>
我得到的错误是:
未定义的方法`merge'for:full_name:Symbol
有什么建议吗?事实是:full_name与工作代码一起正常工作使我相信我搞砸了简化的collection_select代码中的语法,并且问题不在其他地方。
答案 0 :(得分:3)
我认为你混合了两种不同的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
方法”的投诉来自的地方。