Ruby on rails Rails在select2(和simple_表单)上充当标记

Ruby on rails Rails在select2(和simple_表单)上充当标记,ruby-on-rails,simple-form,jquery-select2,acts-as-taggable-on,Ruby On Rails,Simple Form,Jquery Select2,Acts As Taggable On,我想有一个select2标签下拉列表,我可以选择多个现有的标签,并添加新的 我尝试了许多不同的方法,我要么没有让select2框工作,要么最后只传递了一个值 这是我得到的最接近上一个值: <%= f.input :tag_list, collection: @model.tags.map { |t| t.name }, input_html: { :style=> 'width: 300px', class: "taggable", data: { placeholder: "Tag

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

我尝试了许多不同的方法,我要么没有让select2框工作,要么最后只传递了一个值

这是我得到的最接近上一个值:

<%= f.input :tag_list, collection: @model.tags.map { |t| t.name }, input_html: { :style=> 'width: 300px', class: "taggable", data: { placeholder: "Tags" }} %>

试试这个,希望对你有用

= f.input :tag_list, class: "taggable",data: {options: @model.tags.map { |t| t.name }} 

$(".taggable").select2(
  tags: $('.taggable').data('options')
  width: "252px"
);

正如我前面提到的,普通select2库现在只使用selectinput类型,但在使用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

不幸的是,这没有帮助。似乎必须选择输入类型。所以我添加了as::select,否则它只是一个普通的输入框。这样我现在可以得到下拉列表,但有是和否选项,而不是我的标签。另外,它不是多选的。让我想想。你关于tag_list[]的观点对我来说是至关重要的-标记是以[a,b,c]这样的字符串数组提交的,而不是像a,b,c这样的单个字符串