嵌套字段创建新的belongs_to记录

时间:2012-12-11 03:54:56

标签: ruby-on-rails nested-forms

我想创建一组字段,以便在activties/_form.html.erb

中创建新位置

我的表单生效后,我打算在点击添加其他位置按钮或选择位置选择框中的额外选项时显示表单。

到目前为止的故事:

_form.html.erb

<%= f.fields_for :location do |builder| %>
<%= render 'location_fields', :f => builder %>
<%= builder.hidden_field :provider_id, :value => @provider.id %>
<% end %>

activity.rb

attr_accessible :name, :price, :location, :location_attributes
accepts_nested_attributes_for :location

问题是,这一切都运作得有点好。编辑活动记录时,会使用关联的位置记录预先填充位置字段。

如何创建空白表单以便始终创建新位置并与活动相关联?

1 个答案:

答案 0 :(得分:0)

您需要创建一个没有现有数据的“新”位置。这将由此表格使用。

例如: 在您的控制器中

@new_location = Location.new

然后,您可以使用此位置对象调用partial。

您在该字段中看到的位置可能是已与活动相关的位置。这取决于你控制器中的内容。

您还可以尝试嵌套属性:

@activity.location.build

然后在你看来做:

<%= f.fields_for :location do |builder| %>
  <%= builder.label :name %><br/>
  <%= builder.text_field :name %>
<% end %>