【问题标题】:Rails acts-as-taggable-on with select2 (and simple_form)Rails 使用 select2(和 simple_form)作为可标记
【发布时间】:2023-03-03 09:55:01
【问题描述】:

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

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

这是我得到的最接近的值(通过最后一个值):

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

    现在就像一个魅力。

    【讨论】:

    • 您关于 tag_list[] 的观点对我来说至关重要——标签是以 ["a", "b", "c"] 等字符串数组的形式提交的,而不是像 " a, b, c"
    【解决方案2】:

    为我工作:

    咖啡脚本:

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

    在视图中:

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

    重要的部分是multiple: "multiple"

    当然,正如 Mitja 所说,不要忘记将 { tag_list: [] } 放入控制器的强参数中。

    例如,如果您想在下拉菜单中将标签作为建议,您可以这样做:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 不幸的是它没有帮助。似乎它必须是选择输入类型。所以我添加为::select,否则它只是一个普通的输入框。这样我现在得到下拉菜单,但有是和否选项,而不是我的标签。此外,它不是多选。
      • 让我考虑一下。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-15
      • 2013-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多