ActiveRecord :: AssociationTypeMismatch ao tentar salvar atributos aninhados no Rails
Eu li várias páginas sobre relacionamentos `has_one e atributos aninhados, mas não consegui fazer isso funcionar. Qualquer ajuda seria fantástica.
Cada usuário possui uma rede. Estou tentando coletar informações para ambos os atributos em um formulário, mas continuo recebendo a exceçãoActiveRecord::AssociationTypeMismatch in UsersController#create
Os parâmetros passados são:
{"utf8"=>"✓",
"authenticity_token"=>"I54tm1ovzHEHaXbBLTT+5tqBJv2795sKg978ot3HDBc=",
"user"=>{"name"=>"Bilbo Baggins",
"email"=>"[email protected]",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"network"=>{"home_lng"=>"-87.91894912719727",
"home_lat"=>"43.03812464542969",
"center_lng"=>"-87.91894912719727",
"center_lat"=>"43.03812464542969",
"radius"=>"500"}},
"commit"=>"Sign up"}
Estou adivinhando os parâmetros paraNetwork
tem que aparecer de alguma forma comonetwork_attributes
mas não sei como.
Controlador:
def create
@user = User.new(params[:user])
if (@user.save)
sign_in @user
flash[:success] = "One ring to rule them all!"
redirect_to @user
else
@title = "The journey begins..."
render 'new'
end
end
Visão:
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.text_field :email %><br />
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation, "Confirmation" %>
<%= f.password_field :password_confirmation %>
<%= f.fields_for @network do |fn| %>
<%= fn.hidden_field :home_lng %>
<%= fn.hidden_field :home_lat %>
<%= fn.hidden_field :center_lng %>
<%= fn.hidden_field :center_lat %>
<%= fn.hidden_field :radius %>
<% end %>
e, claro, os modelos:
class User < ActiveRecord::Base
attr_accessor :password
attr_accessible :name, :email, :password, :password_confirmation, :network_attributes, :network
has_one :network, :foreign_key => "user_id",
:dependent => :destroy
accepts_nested_attributes_for :network,
:reject_if => :all_blank,
:allow_destroy => true
end
class Network < ActiveRecord::Base
attr_accessible :home_lng, :home_lat, :center_lng, :center_lat, :radius
belongs_to :user
end
Obrigado