Rails fields_for不会在里面看到我的字段

时间:2013-01-05 17:02:08

标签: ruby-on-rails ruby ruby-on-rails-3 nested-forms

我正在尝试同时创建两个对象。我最好的方法是使用fields_for。这种关系是has_many。

模型/ location.rb

  attr_accessible :address, :customer_id, :event_id, :latitude, :longitude
  belongs_to :customer
  belongs_to :event

模型/ event.rb

  attr_accessible :locations_attributes
  has_many :locations, :dependent => :destroy
  accepts_nested_attributes_for :locations

表格如下:

<%= form_for(@event) do |f| %>
  ...
  <%= f.fields_for :locations do |e| %>
    <%= e.text_field :longitude %>
    <%= e.text_field :latitude %>
  <% end %>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我的字段不会显示,我已按照本节http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-fields_for中的文档has_many进行操作 并注意如果在我的f.fields_for:locations将其更改为单数而不是字段将显示但我将无法创建它,因为我不允许修改locations_attributes。

更新:

如果我是单数的话。我将其更改为我的活动模型

  attr_accessible  :description, :title, :location_attributes

错误就像这样

app/controllers/events_controller.rb:60:in `new'
app/controllers/events_controller.rb:60:in `create'

我的控制器是这样的

line 60: @event = Event.new(params[:event])

1 个答案:

答案 0 :(得分:1)

你应该以你的形式这样做:(位置不是位置)

<%= f.fields_for :location do |e| %>
    <%= e.text_field :longitude %>
    <%= e.text_field :latitude %>
<% end %>

并在你的模型event.rb

attr_accessible :description, :title, :locations_attributes(位置不是位置)