Rails 5,带有 Select2-rails 的简单表单

Posted

技术标签:

【中文标题】Rails 5,带有 Select2-rails 的简单表单【英文标题】:Rails 5, Simple Form with Select2-rails 【发布时间】:2017-07-25 17:26:41 【问题描述】:

我试图弄清楚如何在我的 rails 5 应用程序中使用带有简单表单的 select2。

我在应用程序中使用作为可标记的行为。

我已经在我的 gem 文件中安装了这个 gem:

gem 'select2-rails'

我试图在我的 gemfile 中安装这个 gem,但是我得到一个错误,说它找不到。我想知道它是否与 Rails 5 不兼容(鉴于上次更新是 2015 年)。

# gem 'select2_simple_form'

我的目标是制作一个表单输入字段,用户可以通过选择标记模型上可用的 5 个预定义标签来完成。

我已经尝试了this post 和这篇文章中提出的解决方案,并且我已经尝试了这个文档流中的每个示例。我无法让它们中的任何一个工作。

在我的 application.js 中,我有:

//= require select2

我也尝试过这些:

// $(document).ready(function() 
//   $(".js-example-basic-multiple-limit").select2(
//   maximumSelectionLength: 2
//   );
//
// );

$(document).ready(function() 
  $('.multiple-input').each(function() 
    $(this).select2(
      tags: true,
      tokenSeparators: [','],
      theme: 'bootstrap',
      placeholder: 'Separated by comma'
      );
    );
);

$(document).ready(function() 
  $('.input-row #proposal_randd_field_list, .input-row #proposal_randd_field_list').select2(tags:[])
);

我根本无法让它工作。当我检查谷歌控制台时 - 我没有收到任何 js 错误,但我也没有得到有效的选择 2 功能。我可以从下拉菜单中以简单表单允许的普通方式进行选择。

我的目标是让我的 Randd::Field 模型的内容(它有一个名为 :title 的属性;这些标题是提案模型上的标签,并存储在该提案模型的 randd_field_list 中)可作为可搜索访问,下拉列表,如 here 所示(在标题加载远程数据下)。

有谁知道如何使用简单的形式在 Rails 中实现这一点。文件根本没有对齐。

我目前的尝试是:

<%= f.collection_select :randd_field_list, Randd::Field.order(:title),  :title, :title, :selected => @proposal.randd_field_list, :include_blank => true, input_html: :class => 'multiple-input', :multiple => true %>

以上内容不允许我选择多个标签(启用 application.js 功能的任何变体)。

我也试过了:

<!-- <select class="js-example-basic-multiple" multiple="multiple"> -->
<!--<input type="hidden" id="ajax-example" /> -->

<%#= f.label :randd_field %>
<%#= f.collection_select :randd_field_list, Randd::Field.order(:title),  :title, :title,  input_html:  class: 'multiple-input', multiple: "multiple"  %>

<%#= f.collection_select :randd_field_list, Randd::Field.order(:title),  :title, :title, :selected => @proposal.randd_field_list, :include_blank => true %>
<!-- </select> -->
  <!-- <select class="js-example-basic-multiple" multiple="multiple"> -->
     <!-- <option value="AL">Alabama</option>
     <option value="WY">Wyoming</option>
 </select> -->
        <%#= f.text_field :randd_field_list, input_type: "textbox", name:"proposal[randd_field_list][]", html_options:  style: 'width: 100%'  %>
        <%#= f.collection_select :randd_field_list, Randd::Field.order(:title),  :title, :title,  %>
        <%#= f.input 'randd_field_list',
       options_from_collection_for_select(@randd_fields, :title, :title),
       multiple: true %>
       <%#= f.collection_select 'randd_field_list',
      options_from_collection_for_select(@randd_fields, :title, :title),
      multiple: true %>
       <%#= f.input :randd_field_list,:collection => @randd_fields,:label_method => :title,:value_method => :title,:label => "Fields" ,:include_blank => false, :multiple => true %>

这些都不起作用。

【问题讨论】:

【参考方案1】:

我在寻找一些 Rails 5 更新信息时遇到了您的帖子。我是新手,但我正在努力解决太多小宝石的问题。我想知道您是否不应该放弃select2 并仅使用simple_form 做您需要的事情?只是一个想法,因为我不知道如何处理你想要做的标签。

祝你好运。

【讨论】:

我实际上放弃了 Rails。我正在学习反应。关于 rails/jquery 的很多东西似乎已经过时且不受支持。经过 4.5 年的尝试,我只是无法学习。无论如何感谢您的提示,但我放弃了 Rails 和 jQuery。 @Mel。祝你好运。我对 React 的快速阅读是它不是一个完整的解决方案。 不 - 我现在将它与 rails 后端一起使用。

以上是关于Rails 5,带有 Select2-rails 的简单表单的主要内容,如果未能解决你的问题,请参考以下文章

如何将 select2-rails 与 simple_form 一起使用?

Rails 5 和 select2 错误,select2 不是函数

select2 rails 下拉菜单无法正确呈现

如何在 BackboneForms 架构中初始化 rails-select2 的选择?

带有 master.key 的 Rails 5.2 - Heroku 部署

在 Rails 3.2.8 中使用 select2 gem 时 Sprockets::FileNotFound