Rails acts-as-taggable-on with select2 (and simple_form)
Rails acts-as-taggable-on with select2 (and simple_form)
我想要一个 select2 标签下拉列表,我可以在其中 select 多个现有标签并添加新标签。
我尝试了很多不同的方法,但我要么没有让 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 库现在仅使用 select 输入类型,但在使用 select2-full 库时它确实适用于输入类型。
所以,这是解决一个问题的方法。
我仍然无法只传递一个值。
我实际上是来自其中一个示例的 copy/pasting 代码,但它是错误的。
据说强参数应该包括: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
重要的部分是多个:"multiple"
当然,正如 Mitja 所说,不要忘记将 { tag_list: [] } 放入您的控制器强参数中。
例如,如果您想在下拉列表中将您的标签作为建议,您可以这样做:
= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: ActsAsTaggableOn::Tag.most_used(30), value_method: :name
我想要一个 select2 标签下拉列表,我可以在其中 select 多个现有标签并添加新标签。
我尝试了很多不同的方法,但我要么没有让 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 库现在仅使用 select 输入类型,但在使用 select2-full 库时它确实适用于输入类型。
所以,这是解决一个问题的方法。
我仍然无法只传递一个值。 我实际上是来自其中一个示例的 copy/pasting 代码,但它是错误的。 据说强参数应该包括: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
重要的部分是多个:"multiple"
当然,正如 Mitja 所说,不要忘记将 { tag_list: [] } 放入您的控制器强参数中。
例如,如果您想在下拉列表中将您的标签作为建议,您可以这样做:
= f.input :tag_list, input_html: { class: 'tags', multiple: "multiple" }, collection: ActsAsTaggableOn::Tag.most_used(30), value_method: :name