select2,simple_form和acts_as_taggable_on

时间:2017-11-15 08:03:37

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

我正在尝试将标签添加到模型中。我需要它具有以下功能:

  • 使用select2
  • 在视图中呈现为标记
  • 用户可以创建自己的标签(即输入新标签,然后输入空格'或')
  • 提示用户使用现有标签以保持输入一致

即。同样的方式"标签"发布问题时,此框可在此网站上使用!

我99%的方式,但我采取的每种方法似乎一部分不起作用。

以下是我的软件版本:

  • select2-rails(3.5.7)
  • simple_form(3.0.1)
  • acts-as-taggable-on(4.0.0)
  • Rails 4.03

以下代码:正确呈现,但在保存之前无法添加新代码,提示现有代码正常工作

@tags = ActsAsTaggableOn::Tag.all
<%= f.input :tag_list, input_html: { class: 'tags', multiple: true}, collection: @tags, value_method: :name %>

$('.tags').select2({ 

    tokenSeparators: [',', ' '],
    placeholder: "Add your tag here"
});

以下代码:呈现为多行文本框,而不是通过select2

的标记
@tags = ActsAsTaggableOn::Tag.all
<%= f.input :tag_list, input_html: { class: 'tags', multiple: true}, collection: @tags, value_method: :name %>

$('.tags').select2({ 
    tags: true, 
    tokenSeparators: [',', ' '],
    placeholder: "Add your tag here"
});

以下代码:正确呈现,可以添加新标签,但不提示选择现有标签

@tags = ActsAsTaggableOn::Tag.all
<%= f.input :tag_list, input_html: { class: 'tags', multiple: true } %>

$('.tags').select2({ 
    tags: true, 
    tokenSeparators: [',', ' '],
    placeholder: "Add your tag here"
});

1 个答案:

答案 0 :(得分:0)

对于任何发现这一点的人,我最终都是为了让它发挥作用。

@tags = ActsAsTaggableOn::Tag.all.pluck(:name)
<%= f.input :tag_list, input_html: { class: 'tags', multiple: true, data: {options: @tags} } %>

$('.tags').select2({ 
    tags: $('.tags').data('options'),
    tokenSeparators: [' ', ',']
}); 

很高兴听到是否有更清洁的方法。