今天是我正在研究Ruby on Rails的第一天,现在我被卡住了。我有两个脚手架artist
和song
。
在songs/new.html.erb
中,我有以下几行:
...
<%= f.label :name %><br />
<%= f.text_field :name %>
...
<%= f.label :Artist %>
<%= collection_select(:song, :Artist, @artists, :id, :sort_name) %>
...
在创建新歌曲的表单中,我想要一个包含所有艺术家的<select>
列表。使用上面的代码工作正常。表单按我的意愿创建,并列出艺术家。但是,在提交新歌时,我收到此错误:
Artist(#69916999335860) expected, got String(#69917057438720)
生成的选择的HTML代码如下所示:
<select id="song_Artist" name="song[Artist]">
<option value="1">Vreeswijk, Cornelis</option>
<option value="2">De lyckliga kompisarna</option>
<option value="3">Wiehe, Mikael</option>
<option value="4">Demian, Lars</option>
<option value="5">Sundström, Stefan</option>
</select>
我想collection_select()
的第二个最后一个参数是错误的,但应该是什么?
答案 0 :(得分:1)
我认为这应该是:
<%= collection_select(:song, :artist_id, @artists, :id, :sort_name) %>
第二个参数是要在创建/更新的模型中分配的方法。因此,在您的控制器中,将使用params[:song][:artist_id]
详细说明可在“{3}”下的“collection_select”
下找到