Tenho os seguintes modelos
class Mantenedora < ActiveRecord::Base
validates_presence_of :nome,:sigla,:cnpj,:telefone, :message => "não pode ser branco"
#validates_numericality_of :cnpj,:telefone, :message => "pode ser somente numero"
validates_length_of :cnpj, :within => 14..18, :message => "deve ter 14 caracteres"
validates_length_of :telefone, :within => 10..14, :message => "telefone com DDD"
belongs_to :endereco
#accepts_nested_attributes_for :endereco, :allow_destroy => true
#attr_accessible :endereco_attributes
end
class Endereco < ActiveRecord::Base
belongs_to :tipo_endereco
belongs_to :tipo_logradouro
has_one :mantenedora
#belongs_to :mantenedora, :class_name => "Mantenedora", :foreign_key => "mantenedora_id"
end
Tenho a seguinte View de cadastrar Mantenedora
<%= form_for(@mantenedora) do |f| %> <% if @mantenedora.errors.any? %> <div id="error_explanation"> <h2><%=
pluralize(@mantenedora.errors.count, "error") %> Mantenedora não pode ser salva:</h2>
<ul> <% @mantenedora.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> </div> <% end %>
<fieldset> <legend>Cadastro de Mantenedora:</legend> <div class="cadastro"> <%= f.label :nome %>:
</div> <div class="cadastro"> <%= f.text_field :nome %>
</div> <div class="cadastro"> <%= f.label :sigla %>:
</div> <div class="cadastro"> <%= f.text_field :sigla %>
</div> <div class="cadastro"> <%= f.label :cnpj %>:
</div> <div class="cadastro"> <%= f.text_field :cnpj ,:class=> 'cnpj' %>
</div> <div class="cadastro"> <%= f.label :telefone %>:
</div> <div class="cadastro"> <%= f.text_field :telefone , :class=> 'telefone'%>
</div>
<%= f.fields_for :endereco, @mantenedora.endereco do |endereco_form| %>
<%= render :partial => 'endereco', :locals => { :l => endereco_form } %>
<% end %>
<div class="actions"> <%= f.submit %> <%= link_to '', mantenedoras_path, :class => 'voltar' %>
</div> </fieldset>
<% end %>
Minha situação é a seguinte, tenho uma tabela Mantenedora que tem a coluna endereco_id que é chave estrangeira da tabela Endereco, que ao cadastrar mantenedora, quero cadastrar o endereço também(estou usando uma tabela a parte pois terei vários cadastros que precisam do endereco assim fica com menos replicações), estou usando fields_for para carregar os dados do cadastro do endereco, porém aparece esse erro ao salvar a mantenedora:
Endereco(#2112) expected, got ActiveSupport::HashWithIndifferentAccess(#2100) Rails.root: /Users/maxmiller/github/sistemicoApplication Trace | Framework Trace | Full Trace
app/controllers/mantenedoras_controller.rb:45:in `create'
RequestParameters:
{"utf8"=>"✓",
"authenticity_token"=>"RUIcrbjFPXYyh7R9EtK3S8aQmdTCkN1XHbufssB2DRw=",
"mantenedora"=>{"nome"=>"yyyy",
"sigla"=>"yyyy",
"cnpj"=>"11.111.111/1111-11",
"telefone"=>"(77)7777.7777",
"endereco"=>{"tipo_endereco_id"=>"1",
"tipo_logradouro_id"=>"2",
"logradouro"=>"xxxxx",
"numero"=>"100000",
"complemento"=>"jdhfgsd",
"bairro"=>"dgkfhds",
"cep"=>"[telefone removido]"}},
"commit"=>"Cadastrar Mantenedora"}