2016-11-07 3 views
0

Ich bin in der Lage, ein Modell Post ordnungsgemäß für has_many und accepts_nested_attributes_for Modellkategorie zu bekommen. Ich möchte jedoch einen Beitrag auf nur 1 Kategorie beschränken, wo ich versage. Hier ist der überarbeitete Code:Rais 5 Fehler mit nested_attributes für eine has_one Beziehung

# post.rb 
has_one :category_tag, :dependent => :delete 
has_one :category, through: :category_tag 
accepts_nested_attributes_for :category_tag 

# posts_controller.rb 
def new 
    @post = Post.new 
    @post.category_tag.build 
end 

Und^gibt es das Problem: nicht definierte Methode 'build' für nil: NilClass
Es funktionierte gut, als ich has_many :category_tags im Modell und @post.category_tags.build
TIA

Antwort

2

Für has_one Beziehungen das richtige Format ist

@post.build_category_tag 
+0

ich Schienen 5 und die Lösung sou mit Für mich ist es merkwürdig, aber es funktioniert nicht. 'undefined Methode build_category_tag' –

+0

Das ist sehr merkwürdig! Ich wechselte zurück zu 'has_many' Einstellungen, um weiter an anderen Aspekten der App zu arbeiten. Aber als Sie die Antwort gepostet haben (was nicht funktioniert hat), habe ich die ursprüngliche Zeile (nach dem Wechsel zu has_one-Einstellungen) wieder "@ post.category_tag.build" ausprobiert und es funktionierte einwandfrei. Ich erinnere mich, dass ich den Server neu gestartet habe (was eigentlich kein Problem sein sollte), als ich versuchte, was ich gepostet habe. –

+0

Es hätte erstellt werden sollen. Siehe http://guides.rubyonrails.org/association_basics.html#has-one-association-reference – SteveTurczyn

Verwandte Themen