undefined方法`merge'for:name:Symbol Rails 4.1.x collection_select

See*_*uth 14 ruby-on-rails

我有一个表单元素:

<%= f.collection_select :race, :id, Race.all, :id, :name, prompt: true %>

这允许您在我正在创建的文本冒险中选择您的角色竞赛.目标是让所有可用的比赛下拉,按名称选择并让params传回该比赛的id.

但是当我加载页面时,我得到了undefined method 'merge' for :name:Symbol.

我查阅了文档,我认为我做得对,但我猜不是吗?我究竟做错了什么?

And*_*nce 29

f.说明你是在一个form_for块?这意味着方法签名f.collection_select不同于普通的collection_select.第一个参数是由自动提供的FormBuilder,所以如果:race是表单对象的一个​​属性,我假设它是一个Character,你只需要:

<%= f.collection_select :race, Race.all, :id, :name, prompt: true %>
Run Code Online (Sandbox Code Playgroud)

请参阅FormBuilder #collection_select方法的文档.