HABTM Beziehungen und accept_nested_attributes_for
Ich habe ein Formular, mit dem ich @ erstellen kanew blog posts und ich möchte @ erstellen könnneue Kategorien aus dem gleichen Formular.
Ich habe eine gewohnte Beziehung zwischen Posts und Kategorien, weshalb ich Probleme damit habe.
Ich habe die folgenden 2 Modelle:
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
it @My Form kann ich aus einer Reihe vorhandener Kategorien auswählen oder eine brandneue erstellen. Mein Formular lautet wie folgt:
# 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
Wenn ich mein Formular abschicke, wird es verarbeitet, aber die neue Kategorie wird nicht erstellt. Meine Eingabeaufforderungsausgabe sagt mir:
WARNING: Can't mass-assign protected attributes: category
Aber wenn ich @ hinzufüattr_accessible :category
, Ich bekomme einen großen fetten Absturz mit der Fehlermeldung "unbekanntes Attribut: Kategorie".
Wenn ich "fields_for target" in "categories" (anstelle von "category") ändere, wird mein Formular nicht einmal angezeigt.
Ich habe eine Weile damit verbracht, dies herauszufinden, und mir die letzten Railscasts auf nested_models und simple_form angesehen, aber mein Problem konnte nicht behoben werden.
Wäre das einfacher, wenn ich has_many: through relationship (mit einem Join-Modell) anstelle eines habtm verwenden würde?