2011-06-20 8 views
0

イベントを作成するためのフォームを作成しようとしています。イベントは、(クラスユーザの)作成者に属し、フォームには作成者のフィールドが含まれます。fields_forアソシエーション名を表示しない(belongs_to関係)

大体フォームが動作しています - それは他のものをすべて正しくレンダリングし、作成アクションはfields_for @ event.creatorセクションがコメントアウトされたときに正しく処理します。 fields_forタグはイベント[creator]の代わりにevent [user]タグをレンダリングしていますが、理由を把握できません。アイデア?関連する抜粋です。

(ビュー/イベント/ new.html.erbで)

<%= form_for @event do |form| %> 
    <%= render :partial => '/events/form', :object => form %> 
    <%= form.submit 'Go!' %> 
<% end %> 

(イベント/ _form.html.erbで)

... 

<% if !signed_in? %> 
    To create your event, please provide an email address and create a password. <br /> 


    <%= form.fields_for @event.creator do |uf| %> 
    <div class="email_field"> 
     <%= uf.label :email %> 
     <%= uf.text_field :email, :type => "email" %> 
    </div> 

... 
    <% end %> 
<% end %> 

(コントローラ/ events_controller.rb)

def new 
    @event = Event.new 

    if !signed_in? 
    @event.build_creator 
    end 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @event } 
    end 
end 

(models/event.rb)

belongs_to :creator, :class_name => "User" 
accepts_nested_attributes_for :creator 

は主にこれは動作しますが、フォーム要素は

<div class="email_field"> 
    <label for="event_user_email">Email</label> 
    <input id="event_user_email" name="event[user][email]" size="30" type="email" /> 
</div> 
<div class="password_field"> 
    <label for="event_user_password">Password</label> 
    <input id="event_user_password" name="event[user][password]" size="30" type="password" /> 
</div> 
... 

ここでの問題ではなくevent_creatorとイベント[作成者]のevent_userとイベント[ユーザー]であるとしてレンダリングします。フォームを送信すると、イベントにUserフィールドがないというエラーが表示されます。

答えて

3
<%= form.fields_for :creator, @event.creator do |uf| %> 
+0

ありがとうございます! 2つのことが判明しました。私はそれを必要としました。私は関連のユーザー側を修正する必要がありました。私はhas_many:eventsを持っていましたが、欠落していました。:foreign_key => "creator_id" '。一定。再度、感謝します... –

関連する問題