我有一個表格,讓我創造新的博客文章,我希望能夠創建相同的形式新類別。HABTM關係和accepts_nested_attributes_for
我有帖子和類別之間的關係,這就是爲什麼我遇到麻煩。
我有以下2種型號:
class Post < ActiveRecord::Base
has_and_belongs_to_many :categories
attr_accessible :title, :body, :category_ids
accepts_nested_attributes_for :categories # should this be singular?
end
class Category < ActiveRecord::Base
has_and_belongs_to_many :posts
attr_accessible :name
end
我的形式讓我從一堆現有類別中挑選,或創建一個全新的。我的表格如下。
# using simple_form gem
.inputs
= f.input :title
= f.input :body
# the line below lets me choose from existing categories
= f.association :categories, :label => 'Filed Under'
# I was hoping that the code below would let me create new categories
= f.fields_for :category do |builder|
= builder.label :content, "Name"
= builder.text_field :content
當我提交我的表單時,它會被處理,但不會創建新的類別。我的命令提示符下輸出告訴我:
WARNING: Can't mass-assign protected attributes: category
但是,如果我添加attr_accessible :category
,我得到錯誤消息的大胖子崩潰「未知屬性:類別」。
如果我將fields_for target更改爲:categories(而不是category),那麼我的表單甚至不會顯示。
我花了一段時間試圖弄清楚這一點,並觀察了nested_models和simple_form上最近的railscasts,但無法解決我的問題。
如果我使用has_many:through關係(使用連接模型)而不是habtm,會更容易嗎?
http://stackoverflow.com/a/12961298/1446551 – 2013-04-30 07:48:05