2011-08-24 2 views
1

ПросмотрПроблема с Ассоциацией по рельсам 3

<%= form_for @product, :url => admin_products_path do |f| %> 
<div> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
</div> 

<div> 
    <%= f.label :description %> 
    <%= f.text_area :description, :rows => 7 %> 
</div> 
<%= f.fields_for :address do |a| %> 
    <p><%= a.label "Address One" %><br /> 
    <%= a.text_field :address_one %></p> 

    <p><%= a.label "Address Two" %><br /> 
    <%= a.text_field :address_two %></p> 

    <p><%= a.label :city %><br /> 
    <%= a.text_field :city %></p> 

    <p><%= a.label :postcode %><br /> 
    <%= a.text_field :postcode %></p> 

    <p><%= a.label :country %><br /> 
    <%= a.select :country_id, Country.active.collect {|p| [ p.printable_name, p.id ] } %></p> 
<% end %> 
<% end %> 

Контроллер

def create 
    @product = Product.new(params[:product]) 
    if @product.save 
     flash[:notice] = 'Product was successfully created.' 
     render 'show' 
    else 
     render 'new' 
    end 
    end 

модель

class Product < ActiveRecord::Base 
    has_one :address, :as => :addressable  
end 

но когда сохранить данные, которые он шоу вопрос:
Address(#93165130) expected,got ActiveSupport::HashWithIndifferentAccess(#79365750)

Пожалуйста, помогите мне решить эту проблему

ответ

6

Попробуйте при добавлении accepts_nested_attributes_for :address решает эту проблему.

+1

также может понадобиться добавить 'attr_accessible: address_attributes' модель' Product'. –

+0

спасибо. это работает для меня. – khanh

0
accepts_nested_attributes_for :address 

, если не работает, то попробуйте также добавлять вместе с accepts_nested_attributes_for: адрес

attr_accessor :address 
Смежные вопросы