3

我在为工作而构建的 CMS 中有大量的多对多关系。我目前正在使用Select2 3.5.3来分配这些关系。这一切都很好。我的问题是尝试使它们拖放可排序并将结果存储在数据库中。

我在我的表单中获得了 Select2 拖放排序部分演示,但我不太明白如何使这个动态像我的其他 select2 实例一样 - 在我的简单实现中,我用.select2类初始化 select2。我也不明白如何在数据库中存储订单。

我有一个从旧的 Ryan Bates 更新函数修改的示例。在此示例中,我尝试更新案例研究模型与站点模型的关系。案例研究和站点彼此之间具有标准的“拥有”和“属于”的关系。

楷模

网站.rb

  has_many :case_studies_sites
  has_many :case_studies, :through => :case_studies_sites

case_study.rb

  has_many :case_studies_sites
  has_many :sites, :through => :case_studies_sites

更新功能

...我认为它会如何完成。还有一点需要注意:我position:integer在 case_studies_sites 表中添加了一个字段。

def select2_sort
    self.case_studies.each_with_index do |id, index|
      CaseStudiesSite.where(case_study_id: id).update_all({position: index+1})
    end
  end

表单和 JS

网站/_form.html.erb

这是站点表单的示例。

   <div class="form-group">
      <%= f.label :case_study, "Related Case Studies" %>
      <%= f.collection_select :case_study_ids, CaseStudy.all, :id, :title, {}, {class: 'select2 form-control', multiple: true} %>
   </div>

网站.js.coffee

最后是我目前用来运行基本 select2 的咖啡脚本。

$(document).on 'ready page:load', ->
  $('.select2').select2()

表单字段和 JS 目前都是为标准 select2 设置的(又名不可排序),因为我还没有弄清楚如何将 select2 演示转换为这些字段。

4

0 回答 0