使用select2(和simple_form)对Rails进行可标记的操作

我想有一个select2下拉标签,我可以选择多个现有标签并添加新标签。

我尝试了很多不同的方法,我要么不让select2盒子工作,要么只传递一个值(最后一个)。

这是我最接近的(传递最后一个值):

 'width: 300px', class: "taggable", data: { placeholder: "Tags" }} %> 

正如我之前提到的,普通的select2库现在只使用选择输入类型,但在使用select2-full库时它确实适用于输入类型。

所以,这是解决一个问题的方法。

我只有传递一个单值才有问题。 我实际上是从其中一个示例中复制/粘贴代码,这是错误的。 有人说,强参数应该包括:tag_list,这很明显,但实际上需要{tag_list []}才能接受所有值。

现在就像一个魅力。

对我来说,这是:

咖啡脚本:

  $( ".tags" ).select2 theme: "bootstrap", tags: true tokenSeparators: [','] 

并在视图中:

 = f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: @video.tag_list 

重要的部分是多重:“多重”

当然,Mitja如何说,不要忘记将{tag_list:[]}添加到您的控制器强参数中。

例如,如果您希望将标记作为下拉列表中的建议,则可以执行以下操作:

 = f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: ActsAsTaggableOn::Tag.most_used(30), value_method: :name 

试试这个,希望这对你有用。

 = f.input :tag_list, class: "taggable",data: {options: @model.tags.map { |t| t.name }} $(".taggable").select2( tags: $('.taggable').data('options') width: "252px" );