【问题标题】:Select2 tag re-ordering and 'acts as taggable on' gemSelect2 标记重新排序和“作为可标记的”gem
【发布时间】:2013-09-17 19:29:13
【问题描述】:

我的参数哈希中有一个选项列表,我已经使用 select2 重新排序:

"option_list"=>["3,1,2"]

不幸的是,这似乎对 gem 保存的标签的顺序没有影响:

Style.last.options
=> [#<ActsAsTaggableOn::Tag id: 20, name: "1">, #<ActsAsTaggableOn::Tag id: 18, name: "2">, #<ActsAsTaggableOn::Tag id: 17, name: "3">] 

有人知道如何强制重新排序吗? github 的主要服务中断意味着我无法提供太多关于作为可标记魔法的行为是如何发生的解释......

【问题讨论】:

    标签: ruby-on-rails jquery-select2 acts-as-taggable-on


    【解决方案1】:

    好的,Github 回来了,现在我有了答案:

    要保留创建标签的顺序,请使用 acts_as_ordered_taggable

    class User < ActiveRecord::Base
      # Alias for acts_as_ordered_taggable_on :tags
      acts_as_ordered_taggable
      acts_as_ordered_taggable_on :skills, :interests
    end
    
    @user = User.new(:name => "Bobby")
    @user.tag_list = "east, south"
    @user.save
    
    @user.tag_list = "north, east, south, west"
    @user.save
    
    @user.reload
    @user.tag_list # => ["north", "east", "south", "west"]
    

    任何有兴趣复制此过程的人都可以执行以下操作:

    <%= m.input :option_list, :label => "Options", :input_html => { :multiple => true } %>
    

    (上面是simple_form DSL)

    然后,对于您的 JS,这将允许您粘贴以逗号分隔的文本并使其自动标记...并能够拖放标签:

    $("#style_option_list").select2({ width: '220px', tags:[], tokenSeparators: [","]})
    $('body').on('paste', '.select2-input', function() {
      // append a delimiter and trigger an update
      $(this).val(this.value + ',').trigger('input');
    });
    $("#style_option_list").select2("container").find("ul.select2-choices").sortable({
        containment: 'parent',
        start: function() { $("#style_option_list").select2("onSortStart"); },
        update: function() { $("#style_option_list").select2("onSortEnd"); }
    });
    

    别忘了给你的模特add acts_as_ordered_taggable_on :options

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 1970-01-01
      • 2014-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 1970-01-01
      相关资源
      最近更新 更多