Nicht zulässige Parameter für dynamische Formulare in Rails 4
Ich bin neu bei Rails und habe etwas basierend darauf gebaut
http://railscasts.com/episodes/403-dynamic-forms
Ich habe jedoch ein Problem beim Speichern von Daten in den zusätzlichen Feldern. Ich habe ein ProductType-Objekt, das viele ProductField-Objekte enthält. Das ProductField-Objekt gehört auch zu einem ProductType und das Product-Objekt gehört zu einem ProductType.
Neue dynamische Felder können also problemlos über den Konstruktor ProductType hinzugefügt werden, aber wenn ich versuche, Daten in diesen Feldern über den Product Controller festzulegen, geschieht nichts.
Ich bin sicher, dass das Problem im Zusammenhang mit der Verwendung starker Parameter steht, aber das beschriebene Problem wurde behobenHier undHier hat nicht geholfen.
product.rb
class Product < ActiveRecord::Base
belongs_to :product_type
serialize :properties, Hash
end
product_type.rb
class ProductType < ActiveRecord::Base
has_many :fields, class_name: "ProductField"
accepts_nested_attributes_for :fields, allow_destroy: true
end
product_field.rb
class ProductField < ActiveRecord::Base
belongs_to :product_type
end
products_controller.rb
class ProductsController < ApplicationController
def new
@product = Product.new(product_type_id: params[:product_type_id])
end
def product_params
params.require(:product).permit(:name, :price, :product_type_id, {:properties => []})
end
product_type_controller.rb
class ProductTypesController < ApplicationController
def product_type_params
params.require(:product_type).permit(:name, fields_attributes: [:id, :name, :field_type, :required, :product_type_id])
end
Im Konsolenprotokoll: Nicht zulässige Parameter: Eigenschaften
Started PATCH "/products/4" for 127.0.0.1 at 2013-10-04 22:54:59 +0400
Processing by ProductsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"my3ra60OUXexmmguk2eqRetizx3tWPMq04Z2PnODJMQ=", "product"=>{"product_type_id"=>"1", "name"=>"Product1", "properties"=>{"gjfghjf"=>"123", "123"=>[""]}, "price"=>"10"}, "commit"=>"Update Product", "id"=>"4"}
Product Load (0.3ms) SELECT "products".* FROM "products" WHERE "products"."id" = ? LIMIT 1 [["id", "4"]]
Unpermitted parameters: properties
PS: Vielleicht hatte jemand ein ähnliches Problem beim Ansehen eines Podcasts?