Hallo Werner,

Im Controller ist alles richtig, jedoch wird, falls var2 nicht valid ist, var1 dennoch abgespeichert. Daher würde ich es eher so schreiben:
var2 = Model_b.new(params[:params2])
var1 = Model_a.new(params[:params1].merge(:var2 => var2) )
if var1.valid? && var2.valid?
 var1.save!
 var2.save!
end
das einzige was hier geschieht: var2 wird 0 gespeichert und var1 gar nichts.

beides wird nicht gespeichert? hast du dir den code mal angesehen? versucht ihn zu verstehen? Es wird KEINS von beiden gespeichert wenn nicht BEIDE valid sind. Falls das nicht das ist was du willst, dann musst du die bedingung entsprechend anpassen.

Andere Versuch:

var1 = Model_a.create(params[:params1])
var2 = Model_b.new(params[:params])
var1.save!
Klasse! Grr, warum nicht als normale error message..?
Hast Du dir mal die Dokumentation von Rails zu Herzen geführt, und bei den Methoden new, create und save nachgelesen? bei create und save gibt es außerdem eine version mit ausrufezeichen, was die wohl macht??

Ich glaube dein Problem ist, und das ist dumm von mir dass ich nicht gleich drauf komme, dass Du wahrscheinlich in der view folgendes schreibst:

<%= error_messages_for 'var1' %>

Das Ding ist, var1 wird er wohl nicht kennen. Im Controller musst du ein @ 
davor machen, damit es ne instanz variable wird, die für die View zugänglich 
wäre.

@var1 = Model_a.new(...)
...

Außerdem kannst Du offenbar schreiben:

<%= error_messages_for 'var1', 'var2' %>

leider bisher nicht.. Muß gestehen, langsam wird es etwas ärgerlich.
Für solch einen Standardkram (Validierung von Eingaben in ein Formular mit verknüpften Tabellen sollte es doch fiunktionierende, getestete Routinen geben.
Das gibt es schon, ich hoffe doch sehr dass du auch form_for und nicht form_tag nutzt? Damit wird auch vieles leichter.

Derzeit etwas entnervt von RoR.
Rails hat manchmal sehr uninformative Fehlermeldungen, die irgendwo tief im Framework geworfen werden. Das nervt manchmal, gerade am Anfang.

Auf jeden Fall solltest Du Ruby-Debug ausprobieren (es gibt dazu nen screencast auf railscasts.com), dann kommt man bei solchen problemen meist sehr fix weiter. Auch die rails console und die API-Doc fetzt da.


Viele Grüße und viel Glück
Thomas Neumann
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an