validar validaciones realizan rails las formularios formulario cómo anidados ruby-on-rails activerecord

ruby on rails - validaciones - "NoMethodError(método indefinido` with_indifferent_access ''para... ”cuando le pasa atributos anidados



validaciones en ruby (1)

Debido a que el cliente tiene muchos incidentes, Rails espera que los "incidents_attributes" sean una matriz, no un hash. Esto debería suceder automáticamente, cuando lo haces:

<%= form_for @customer do |f| %> <%= f.fields_for :incidents do |incident_fields| %> <%= incident_fields.date_select :date_of_incident %> <% end %> <% end %>

He estado buscando en Google por un tiempo y sin tener suerte. Recibo un error "NoMethodError (método indefinido` with_indifferent_access ''"en mi servicio web cuando le paso atributos anidados.

Otros anidados funcionan, sin embargo son uno a uno y esto es uno a muchos ...

class Customer < ActiveRecord::Base belongs_to :quote has_one :policy, :dependent => :destroy has_one :vehicle, :dependent => :destroy has_many :claims, :dependent => :destroy has_many :incidents, :dependent => :destroy accepts_nested_attributes_for :policy accepts_nested_attributes_for :vehicle accepts_nested_attributes_for :incidents end

Trabajando correctamente:

Processing QuotesController#create to xml (for 127.0.0.1 at 2010-12-12 15:16:33) [POST] Parameters: {"quote"=>{"customer_attributes"=>{"address1"=>nil, "city"=>"ggh", "dob"=>nil, "address2"=>nil, "title"=>nil, "country"=>nil, "postcode"=>nil, "vehicle_attributes"=>{"mileage"=>nil, "registration"=>nil, "value"=>nil, "parking"=>nil}, "policy_attributes"=>{"breakdown"=>nil, "windscreen"=>"1", "excess"=>nil}, "telephone"=>nil, "surname"=>nil, "forename"=>"wasdddfggh", "email"=>nil}}} [4;35;1mQuote Create (1.0ms)[0m [0mINSERT INTO "quotes" ("created_at", "updated_at") VALUES(''2010-12-12 15:16:33'', ''2010-12-12 15:16:33'')[0m [4;36;1mCustomer Create (0.0ms)[0m [0;1mINSERT INTO "customers" ("address1", "city", "dob", "address2", "quote_id", "created_at", "title", "country", "postcode", "updated_at", "telephone", "forename", "surname", "email") VALUES(NULL, ''ggh'', NULL, NULL, 2, ''2010-12-12 15:16:33'', NULL, NULL, NULL, ''2010-12-12 15:16:33'', NULL, ''wasdddfggh'', NULL, NULL)[0m [4;35;1mPolicy Create (0.0ms)[0m [0mINSERT INTO "policies" ("breakdown", "created_at", "windscreen", "excess", "updated_at", "customer_id") VALUES(NULL, ''2010-12-12 15:16:33'', 1, NULL, ''2010-12-12 15:16:33'', 2)[0m [4;36;1mVehicle Create (0.0ms)[0m [0;1mINSERT INTO "vehicles" ("mileage", "created_at", "updated_at", "registration", "value", "parking", "customer_id") VALUES(NULL, ''2010-12-12 15:16:33'', ''2010-12-12 15:16:33'', NULL, NULL, NULL, 2)[0m Completed in 153ms (View: 4, DB: 1) | 201 Created [http://localhost/quotes.xml] host/quotes.xml]

Sin embargo, al añadir

"incidents_attributes"=>{"date_of_incident"=>"2008-05-19", "sum_of_claim"=>"34554", "description"=>"PLEASE!"},

causa

NoMethodError (undefined method `with_indifferent_access'' for "2008-05-19":String):

Al eliminar el date_of_incident y solo se quejará del mismo atributo.

Anteriormente tuve "incident_attributes" (incidentes singulares) y has_many: incidente, pero cambiar esto no ayudó.