2016-01-23 55 views
0

如Railscasts196,我已经在Events嵌套AttendancesEventsEvent_groupsRailscasts196,导轨4,simple_form,JS,HAML

= simple_form_for(@event_group) do |f| 
    = f.error_notification 
    .form-inputs 
    = f.input :name 
    .form-actions 
    = f.button :submit 
    .h2 Events (not simple form) 
    = f.fields_for :events do |p| 
    = link_to_add_fields "Add field", p, :fields 
    .field 
     = p.label :starts_at 
     = p.hidden_field :_destroy 
     = link_to "[remove]", '#', class: "remove_fields" 
     %p 
     = p.fields_for :attendances do |f| 
      .field 
      = f.label :guest_id 
      = f.text_field :guest_id 
      = f.label :attendance_rate_id 
      = f.text_field :attendance_rate_id 

Event_groups.js:

$(document).on 'click', 'form .remove_fields', (event) -> 
    $(this).prev('input[type=hidden]').val('1') 
    $(this).closest('fieldset').hide() 
    event.preventDefault() 

$(document).on 'click', 'form .add_fields', (event) -> 
    time = new Date().getTime() 
    regexp = new RegExp($(this).data('id'), 'g') 
    $(this).before($(this).data('fields').replace(regexp, time)) 
    event.preventDefault() 

Application_helper.rb:

module ApplicationHelper 
    def link_to_add_fields(name, f, association) 
    new_object = f.object.send(association).klass.new 
    id = new_object.object_id 
    fields = f.fields_for(association, new_object, child_index: id) do |builder| 
     render(association.to_s.singularize + "_fields", f: builder) 
    end 
    link_to(name, '#', class: "add_fields", data: {id: id, fields: fields.gsub("\n", "")}) 
    end 
end 

现在我不能让jQuery像Railscasts中的DeleteAdd new一样工作。 link_to_add_fields & remove必须有错误。请帮忙

回答

1

其实现在有更好的方法,用cocoon gem

这很简单,我用它取得了巨大的成功;)希望你也这样做!

+0

我会去看看。谢谢! –

1

我创建了一个关于嵌套模型的形式回购从投插曲196/197与轨道5兼容轨它工作得很好nesting-models-form