2016-01-23 56 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