In fields_for auf Unterobjecte zugreifen zugreifen?

ja hallo erstmal,…

ich habe hier in einer Anwendung 3 Entitäten:
Firma (company)
Firmen-Adressen-Mapping (address_mapping)
Addressen (address).
In einer Firmen-Maske sollen die Adressen mitbearbeitet werden können.
also

<% fields_for “company[address_mappings][]”,address_mapping, do |form|
%>
#Eingabefeld für die Straße
<%= form.textfield ‘address.street’, :index=>nil />
<%end %>

Dies Funktioniert aber leider nicht
Fehler:
undefined method `address.street’ for #AddressMapping:0xb677f400
Wie kann ich den Text-FieldHelper hier benutzen?
Dies soll ungefähr dies in den html-code schreiben:

<input type=“text” name=“company[address_mapping][][address][street]”
value="<%= address_mapping.address.street%>"

Danke,
Keep smiling
yanosz

ja hallo erstmal,…

ich versuche es jetzt mit zwei verschaltelten fields_for Ausdrücken -
nur leider will das Klammern noch nicht so ganz klappen:

  1. Ausdruck:
    <% fields_for “#{params[:controller]}[address_mapping_attributes][]”,
    address_mapping do |form|%>

  2. Ausdruck:
    <% fields_for
    “#{params[:controller]}[address_mapping_attributes][][address]”,
    (address_mapping.address || Address.new) do |address_form|%>

Das führt zu einem geringfügig falschen Request.
{“company”=>{“address_mapping_attributes”=>[“type”=>“1”,
“address”=>[{“street”=>“St. Straße.”}]}, {“address”=>[{“zip”=>“12323”}]}

Ich hätte aber lieber:
{“company”=>{“address_mapping_attributes”=>{“type”=>“1”,“address”=>{“street”=>“St.
Straße.”,“zip”=>“12323”}}…}
Wie muss ich das Zweite fields_for Klammern?
Danke,
Am Dienstag, 20. November 2007 schrieb Jan L.:

On Thursday 22 November 2007, Jan L. wrote:

ja hallo erstmal,…

ich versuche es jetzt mit zwei verschaltelten fields_for Ausdrücken -
nur leider will das Klammern noch nicht so ganz klappen:

Die Railscasts zum Thema kennst du?

Das entfernen von Unterobjekten würde ich allerdings anders lösen,
nämlich indem ich zu den bestehenden Unterobjekten die ids in hidden
fields schreibe und beim Update (unterobjekt_attributes=) die fehlenden
Objekte aus der Assoziation entferne. Das geht aber nur, wenn das
Oberobjekt versioniert ist und so Konflikte durch konkurrierende
Änderungen verhindert werden.

Michael