0

イベントを作成するためのフォームを作成しようとしています。イベントは (ユーザー クラスの) 作成者に属し、フォームには作成者用のフィールドが含まれます。

おおむねフォームは機能しています - 他のすべてが適切にレンダリングされ、fields_for @event.creator セクションがコメントアウトされている場合、create アクションはそれを適切に処理します。fields_for タグは event[creator] ではなく event[user] タグをレンダリングしていますが、その理由がわかりません。アイデア?関連する抜粋を次に示します。

(views/events/new.html.erb 内)

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

(events/_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[creator] ではなく、event_user と event[user] です。フォームを送信すると、イベントにユーザー フィールドがないというエラーが表示されます。

4

1 に答える 1

3
<%= form.fields_for :creator, @event.creator do |uf| %>
于 2011-06-21T07:49:09.330 に答える