我通过与我的模型的关联设置了一个has_many,我正在尝试创建一个表单,我可以在一个提交的歌曲中添加多个类型。我正在使用collection_select助手。以下是我的代码设置方式的摘要。
歌曲模型
has_many :song_genres
has_many :genres, :through => :song_genres
类型模型
has_many :song_genres
has_many :songs, :through => :song_genres
Song Genre Model
belongs_to :song
belongs_to :genre
然后在我的new.html.erb中 我有这个
collection_select :song, :genres, Genre.all, :id, :name, {:selected => 1}, {:multiple => true}
当我提交表格时,我得到了
Can't mass-assign protected attributes: genres
错误
我知道我在这里错过了一些大事。有人可以帮我解决一下如何正确设置吗?
谢谢!
答案 0 :(得分:2)
尝试这种方式:
collection_select :song, :genre_id, Genre.all, :id, :name, {:selected => 1}, {:multiple => true}
正如Rails guide所述: “如果您使用select(或类似的帮助程序,如collection_select,select_tag)来设置belongs_to关联,则必须传递外键的名称(在上面的示例中为city_id),而不是关联名称。”