2011-01-25 10 views
1
私は namephoneemailを持って Clientと呼ばれるモデルを持っているのRails 3によ

に失敗しました。私のモデルファイルは、次のようになります検証は常にすべてのフィールド

class Client < ActiveRecord::Base 
    belongs_to :salon 
    belongs_to :address 
    validates_presence_of :name 
    validates_presence_of :phone 
    validates_presence_of :email 
    accepts_nested_attributes_for :address 
    attr_accessible :address_attributes 
end 

phonename、あなたが見ることができるようにとemailすべての要求されています。私が新しいClientを作成して提出できるはずのフォームに行くと、フィールドに何を入れても、3つのバリデーションはすべて失敗します。

<%= form_for(@client) do |f| %> 
    <% if @client.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@client.errors.count, "error") %> prohibited this client from being saved:</h2> 

     <ul> 
     <% @client.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <%= f.hidden_field :salon_id, :value => Salon.logged_in_salon.id %> 
    <div class="field"> 
    <%= f.label :name %><br /> 
    <%= f.text_field :name %> 
    </div> 
    <div class="field"> 
    <%= f.label :phone %><br /> 
    <%= f.text_field :phone %> 
    </div> 
    <div class="field"> 
    <%= f.label :email %><br /> 
    <%= f.text_field :email %> 
    </div> 

    <%= f.fields_for :address do |address_form| %> 
    <div class="field"> 
     <%= address_form.label :line1 %><br /> 
     <%= address_form.text_field :line1 %> 
    </div> 
    <div class="field"> 
     <%= address_form.label :line2 %><br /> 
     <%= address_form.text_field :line2 %> 
    </div> 
    <div class="field"> 
     <%= address_form.label :city %><br /> 
     <%= address_form.text_field :city %> 
    </div> 
    <div class="field"> 
     <%= address_form.label :state_id %><br /> 
     <%= select("client[address]", "state_id", State.all.collect {|s| [ s.name, s.id ] }) %> 
    </div> 
    <div class="field"> 
     <%= address_form.label :zip %><br /> 
     <%= address_form.text_field :zip %> 
    </div> 
    <% end %> 

    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

ここに私のcreateアクションです:ここに私のフォームファイルは、なぜこれが起こっている

def create 
    @client = Client.new(params[:client]) 

    respond_to do |format| 
     if @client.save 
     format.html { redirect_to(@client, :notice => 'Client was successfully created.') } 
     format.xml { render :xml => @client, :status => :created, :location => @client } 
     else 
     format.html { render :action => "new" } 
     format.xml { render :xml => @client.errors, :status => :unprocessable_entity } 
     end 
    end 
    end 

任意のアイデアは?

+0

作成アクションを含めることはできますか。また、フォームのネストされた部分が出力されていますか? – mark

+0

作成アクションを組み込むように編集されました。いいえ、ネストされた部分は出力されていません。理由はわかりません。私はそれを望みますが、私は別の問題にまだ取り組まないことに決めました。 –

+0

アドレスのインスタンスを含めるか、インラインでビルドする必要があります。<%= f.fields_for @address do | address_form | %>または<%= f.fields_for @ client.build_address do | address_form | %> – mark

答えて

2

アクセス可能な唯一の属性として:address_attributesが設定されているからです。

attr_accessible :address_attributes, :name, :phone, :email 

または質量割り当てを使用していないに

attr_accessible :address_attributes 

を変更します。

+0

私はそれを試みます。あなたは質量割り当てによって正確に何を意味しますか? –

+0

http://guides.rubyonrails.org/security.html#mass-assignment –

+0

ところで、問題が修正されました。ありがとう。 –

関連する問題