Verschachtelte Formulare in Schienen - Zugriff auf Attribut in has_many-Beziehung
Habe ich ein Benutzer-und ein Profil-Modell. Ein Benutzer kann mehrere profile. Ich brauche nur den Zugriff auf Informationen aus den Profilen, Abschnitt (viz Telefonnummer) in meiner user-Modell bei der Benutzer-Erstellung. Daher bin ich versucht, es zu erhalten getan durch attr_accessible
. Meine user.rb sieht so aus.
has_many :profiles
attr_accessible :handle, :email, :password, :profile_mobile_number
attr_accessor : :profile_mobile_number
Das problem, das ich konfrontiert ist, dass, wenn ich versuche zu nennen, die getter-Methode profile_mobile_number in einer Methode user.rb (die Methode privat ist, aber ich denke, es spielt keine Rolle), ich bin immer ein null-Wert. Ich benutze Folgendes in meinen user/new.html-Code.erb form
Meine Frage ist, was ist der richtige Weg, dies zu tun? Sollte ich <% f.fields_for :profile do |ff| -%>
oder <% f.fields_for :profiles do |ff| -%>
(beachten Sie, dass die zweite plural). Wenn ich den plural :profile, die ich gar nicht sehen, die Felder auf dem Formular. Was vermisse ich hier? Und was ist die Zeitform verwendet werden muss, im Modell-Benutzer.rb? :profile_phone_number oder :profiles_phone_number? Danke.
InformationsquelleAutor der Frage Swamy g | 2010-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie etwas wie die folgende:
Aber da du schon ein Verein, dann könnte genauso gut verwenden die 'accepts_nested_attributes_for'
InformationsquelleAutor der Antwort Pran
Sollten Sie beobachten RailsCasts Verschachtelten Modell Form.
Dank Ryan Bates tolle Arbeit.
InformationsquelleAutor der Antwort allenwei
http://apidock.com/rails/v3.2.8/ActionView/Helpers/FormHelper/fields_for
Diese api-dock link-Liste viele Verschachtelte Attribute Beispiele, einschließlich eins-zu-eins, eins-zu-viele. Es ist sehr hilfreich!!!
InformationsquelleAutor der Antwort ryancheung
Können Sie'accepts_nested_attributes_for', dies zu tun; aber es gibt einen kleinen trick, in den Formen:
Müssen Sie verwenden den singular, und rufen Sie fields_for für jedes Profil, so wie hier:
Beachten Sie, dass ist :profile_attributesstatt nur :Profil.
InformationsquelleAutor der Antwort nanda