12

私は会議モデルを持っています:

class Meeting < ActiveRecord::Base
  has_one :location, :class_name => "MeetingLocation", :dependent => :destroy
  accepts_nested_attributes_for :location

次に、MeetingLocation モデルがあります。

class MeetingLocation < ActiveRecord::Base
  belongs_to :meeting

私の新しい会議フォーム:

<%= form_for @meeting do |f| %>
  <%= f.label :location %>
  <%= fields_for :location do |l| %>
    Name <%= l.text_field :name %>
    Street <%= l.text_field :street %>
    City <%= l.text_field :city, :class => "span2" %>
    State <%= l.select :state, us_states, :class => "span1" %>
    Zipcode <%= l.text_field :zip, :class => "span1" %>
  <% end %>

新しい会議フォームを表示すると、場所フィールドが空白です! 場所ラベルのみが表示され、他の場所フィールドは表示されません。過去 3 時間、説明を探していましたが、多くの同様の問題が見つかりましたが、運がありませんでした。

ありがとう。

4

1 に答える 1

22

場所のフィールドが表示されない理由は、 で新しい会議を作成したときに@meeting = Meeting.new、この会議に関連付けられた MeetingLocation がまだないためです。@meeting.location を呼び出すと、nil が返されます。このため、フォームには場所のフィールドは表示されません。

これを修正するには@meeting.build_location、新しい会議を作成した後に電話する必要があります。これにより、新しい会議が空白の場所に関連付けられます。

編集:に変更fields_forしてみてくださいf.fields_for

于 2012-06-14T22:40:27.410 に答える