我有一个CEvemt模型,它与Schedule模型有关联,现在我试图用多个计划对象实现一个表单:如果用户点击“添加更多”链接,用户可以添加更多计划字段。rails fields_for嵌套对象
我的表单代码:
<% 3.times do |x| %>
<%= render :partial => "schedule_field", :locals => {:event => @schedule} %>
<% end %>
<%= hidden_field_tag :schedule_fields_count, 2 %>
<%= link_to "Add more", "#", :id => "add_schedule_field" %>
部分:
<%= fields_for :event, event.schedules.build do |s| %>
<div class="row">
<div class="small-3.5 columns">
<%= s.datetime_select :start %>
</div>
<div class="small-3.5 columns">
<%= s.datetime_select :finish %>
</div>
<div class="small-5 columns">
<%= s.text_field :description %>
</div>
</div>
<% end %>
和负载更多的我用这个观点
$("#schedule_fields").
append("<%= escape_javascript(render :partial => 'schedule_field', :locals => {:event => @event}) %>");
$("#schedule_fields_count").val("<%= @number %>");
的问题是,这种代码不会呈现什么我想要..例如在窗体上我有3个日程表说明字段,它们都具有相同的名称schedule[description]
,所以日期不正确,我无法保存。
如果你有固定数量的字段,在这种情况下3,在这种情况下,你不能添加另一个新字段,因为你提供了部分表单对象 – maki
你可以添加新字段用这种方法。 Fields_for将呈现每个关联对象的所有部分,表单构建器将处理这些对象。 – BroiSatse
我的意思是你不能通过Ajax添加一个新的字段,或者我失去了一些东西? – maki