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?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage