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