2011-02-10 10 views
1

私はクラスがサーバーに投稿されても保存されないという問題があります。その理由を理解することはできませんし、この問題についていくつかの助けに感謝します。accepts_nested_attributes_forを動作させるには、ビュー内のポリモーフィックアドレスのフィールドを保持する必要がありますか?

まず、私の勘定科目クラスを取ると、住所への参照があり、請求先住所と配送先住所の両方が定義されます。

class Account < ActiveRecord::Base 
    has_many :addresses, :as => :addressable, :dependent => :destroy 
    has_one :billing_address, :as => :addressable 
    has_one :delivery_address, :as => :addressable 
    accepts_nested_attributes_for :billing_address, 
    :allow_destroy => true, 
    :reject_if  => missing_attrs?('street_one', 'zip', 'city', 'country_id') 

    accepts_nested_attributes_for :delivery_address, 
    :allow_destroy => true, 
    :reject_if  => missing_attrs?('street_one', 'zip', 'city', 'country_id') 
end 

今私のアドレスクラスがどのように見えるが、その後、私は次のような形式でのビューを持っていると私はそれがブラウザで完璧に見えるんと言わなければならない

class Address < ActiveRecord::Base 
    belongs_to :country 
    belongs_to :addressable, :polymorphic => true 

    validates_inclusion_of :type, :in => %w(BillingAddress DeliveryAddress), :message => "Please speficy either billing or delivery address" 
    attr_accessor :street_one, :street_two, :zip, :city, :country_id, :region 
end 

class BillingAddress < Address 
end 

class DeliveryAddress < Address 
end 

を次の、すべてのフィールドは名前があると配列elelmentsとallとは一致しています。

=semantic_form_for [:admin,@account] do |f|   
    = render 'shared/errors', :target => @account 
    =f.inputs       
    =f.semantic_fields_for :billing_address do |address| 
     =address.inputs name:"Billing Address" do 
     =address.input :street_one 
     =address.input :street_two 
     =address.input :city 
     =address.input :zip 
     =address.input :region 
     =address.input :country 

    =f.semantic_fields_for :delivery_address do |address| 
     =address.inputs name:"Delivery Address" do 
     =address.input :street_one 
     =address.input :street_two 
     =address.input :city 
     =address.input :zip 
     =address.input :region 
     =address.input :country       
    =f.semantic_fields_for :users do |user|       
    =user.inputs name:"Default user" do 
     =user.input :email 
     =user.input :password 
    =f.submit 

私はraise params.to_yamlでこれを確認した場合にアドレス指定し、タイプの多型フィールドが欠落しているものの、それは正しく見えるん。私はコントローラーでこれを構築してから、更新前と作成前にコントローラーに戻す前にそれらを表示しておく必要があると思います。私はthis postを読んでいますが、正確に何をしているのか分かりません。

私はあなたの最善の提案をしてもらえますか?

答えて

0

フォームに不足しているフィールドを追加しましたが、今は完全に機能しています。

関連する問題