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,你会得到零。因此,表单不会显示该位置的字段。

要解决此问题,您应该@meeting.build_location在创建新会议后致电。这会将新会议与空白位置相关联。

编辑:尝试更改fields_forf.fields_for

于 2012-06-14T22:40:27.410 回答