Parámetros no permitidos para formularios dinámicos en Rails 4
Soy nuevo en Rails y construí algo basado en esto
http://railscasts.com/episodes/403-dynamic-forms
pero tengo un problema con el almacenamiento de datos en los campos adicionales ... Tengo un objeto ProductType que tiene muchos objetos ProductField. El objeto ProductField también pertenece a un ProductType y un objeto Product pertenece a un ProductType.
Por lo tanto, los nuevos campos dinámicos se pueden agregar fácilmente a través del tipo de producto del constructor, pero cuando intento configurar los datos en este campo a través del controlador del producto, no ocurre nada.
Estoy seguro de que el problema está relacionado con el uso de parámetros fuertes, pero se describe una correcciónaquí yaquí no ayudo
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
En el registro de la consola: Parámetros no permitidos: propiedades
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
P.S: ¿tal vez alguien tuvo un problema similar al ver un podcast?