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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage