宝石用法:cocoon + selectize-rails

时间:2016-02-26 00:01:46

标签: ruby-on-rails ruby cocoon-gem selectize.js

我无法让selectize-railscocoon合作。 (当加入+1出勤选择时,它不活跃)。我看到了this的问题,但它让我无处可去。

我有什么:

- Attendance model
- Event model
- Event has_many :attendances

我的js:

$(document).ready(function(){
    if ($('.selectize')){
        $('.selectize').selectize({
            sortField: 'text'
        });
    }
});

活动/ _form:

= simple_form_for @event do |f|
   = f.button :submit, class: "btn btn-success add-button"
   = f.input :starts_at, :minute_step => 15
  #tasks
    = f.simple_fields_for :attendances do |attendance|
      = render 'attendance_fields', f: attendance
    .links
      %p
      = link_to_add_association 'Add attendance', f, :attendances

_Attendance_fields:

.nested-fields
  = f.select :guest_id, Guest.all.map{|c| [c, c.id]}, {},class: 'selectize'
  = link_to_remove_association "Remove attendance", f

有什么想法吗?请帮忙

1 个答案:

答案 0 :(得分:3)

因此,您的代码会在页面上选择类.selectize的项目,然后在其上调用selectize函数。但是,此调用仅在初始加载页面时运行。将新项目动态添加到页面时,您将不得不再次执行此操作。 Cocoon引发了你可以听的事件,当它们发生时,你会得到插入的html片段。

所以你可以这样做:

$('form').on('cocoon:after-insert', function(e, addedItem) {
  $(addedItem).find('.selectize').selectize({
    sortField: 'text'
  })
});

这意味着:每次提出cocoon事件的形式,我们都会应用.selectize代码。

可以在documentation中找到更多示例和信息。