Ich sehe viele Beiträge, aber ich bin mir nicht sicher, dass sie auf mein Problem zutreffen. Hauptsächlich, weil wenn ich versuche, diese Lösungen zu implementieren, bekomme ich Syntaxfehler. Ich weiß nicht, warum das so ein Problem zu sein scheint.Rails 4 verschachtelte Felder_für nicht speichern
Ich habe Profilobjekt, das eine 1: 1-Beziehung mit Benutzer hat. In der Bearbeitung des Profils möchte ich die E-Mail des Benutzers speichern. Aber es wird hier nicht sparen, ist der Code und Ausgabe ...
Ausblick:
= semantic_form_for @profile do |f|
= f.inputs class: "form-group" do
= f.input :name, input_html: { class: "form-control" }
= f.input :username, input_html: { class: "form-control" }
= f.semantic_fields_for @profile.user do |u|
= u.input :email, input_html: { class: "form-control" }
Die Paramater an die Steuerung weitergegeben werden:
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"iMkkLX6qN7PagmbnEQlQZ0CH5Q/fl+G9273eHFO9aRk8EG4MisEi3PwQOWocU2wp3UW5ju4DOJcUh5v19pS46A==", "profile"=>{"name"=>"John Doe", "username"=>"JohnnyD", "user"=>{"email"=>"[email protected]"}, "commit"=>"Save", "controller"=>"profiles", "action"=>"update", "id"=>"4"}
Die Antwort der Steuerung:
Unpermitted parameter: user
Die Whitelist:
params.require(:profile).permit(:name, :username, :user)
Die Modelle:
class Profile < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
class User < ActiveRecord::Base
has_one :profile, :dependent => :destroy
end
Ich habe das Hinzufügen users_attributes versucht: [: E-Mail], um den Fehler erforderlich params #syntax. Ich habe versucht, Benutzer: [: E-Mail] zu den erforderlichen Prarams # Syntaxfehler Ich habe versucht mit und ohne access_nested_attributes im Modell # keine Wirkung.
Kann mir jemand einprägen, weil ich eindeutig ahnungslos bin.
Danke.
Ich habe die Änderungen vorgenommen, die Sie vorgeschlagen haben, aber die Whitelist gibt mir jetzt einen Syntaxfehler, den ich bekam, wenn ich versuchte, diese Änderungen vorzunehmen .../home/ubuntu/workspace/app/controllers/profiles_controller. rb: 95: Syntaxfehler, unerwartet ',', erwartet => ... s: [: email] –
Die vollständige Whitelisting-Zeile ... params.require (: profile) .permit (: user_id,: name,: about ,: country_code,: state_code,: stadt,: avatar,: unternehmen,: firma_url,: username, benutzer_attribute: [: email],: online_store_url,: facebook_url,: instagram_url,: blog_url, passion_ids: []) –
Ich bin umgezogen Users_Attribute an das Ende der Whitelist und hörte auf den Syntaxfehler zu bekommen, aber jetzt bekomme ich das in der Form ... undefined lokale Variable oder Methode 'Benutzer 'für # <#: 0x007f64dc020d58> weil ich die entfernt habe @ profile.user reference und ersetzte es durch Benutzer. –