verschachtelte Attribute für has_one association
Ich brauche, um das setup Parametern für die hat ein Verein in den neuen und Aktionen Bearbeiten, so habe ich diese:
Produkt-Modell
has_one :store
accepts_nested_attributes_for :store
form
= form_tag @product do |f|
= f.fields_for :store do |store_fields|
= render 'store_form', :f => store_fields
controller
params.require (: - Shop).Genehmigung (: - Shop).Genehmigung!
Felder angezeigt, aber wenn ich Absenden, ist es nicht sinnvoll, store-Verband leer ist. Wie problem gelöst werden kann?
UPD
params.require(:product).permit(store_attributes: [:store_id, :supplier_id, :margin, :discount]).permit!
Protokolle:
Parameters: {"utf8"=>"✓", "authenticity_token"=>"...", "product"=>{"name"=>"qwefqwefasdf", "description"=>"", "permalink"=>"asdf", "store_attributes"=>{"margin"=>"123", "discount"=>"123"}}, "button"=>"", "id"=>"asdf"}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, die richtige Antwort ist
ändern
zu
= f.fields_for :store_attributes, @vendor.store do |store_fields|
Stellen Sie sicher, dass die params erwarten Sie gesendet werden. (prüfen Sie, Pluralisierung)
Können Sie kopieren und einfügen, was die params-look wie von der server-Seite?
Dass wird helfen, die Benennung der Parameter korrekt
Wenn params Namensgebung ist richtig, aber nicht akzeptiert wird, dann versuchen Sie, diese explizit
Update:
Verschachtelte Attribute Beispiele:
http://edgeapi.rubyonrails.org/classes/ActionController/Parameters.html#method-i-permit
params.require(:product).permit(:attributes, :of, :product, store_attributes: [:id, :name])
Blick auf die Parameter in der Konsole. Sie sollten etwas sehen wie:
Welchen Mitteln wollen Sie
require
:Produkt (Sie wollen die Produkt-Parameter) und es ermöglichen, die richtigen Attribute für den Shop.Wenn Sie das wünschen (: - Shop), das bedeutet, dass Sie erwarten, dass ein "speichern" - Taste an der Wurzel der Parameter-hash, was nicht der Fall ist (und warum Ihr Verein ist coming up empty.)
permit!
Vorausgesetzt der controller in Frage
ProductsController
Ihre starke parameter-definition ist falsch.Versuchen:
Oder, strenger, ermöglichen, nur die erforderlichen Attribute an:
Wo
:store_field1
und:store_field2
sind die Attribute vonstore
Modell, das in Ihremform
und Sie zulassen möchten.Update:
Folgende arbeiten sollten, basierend auf Ihren log-Ausgabe.
.permit!
.