Javascript 选择2 JS lib不在Rails应用程序上工作

Javascript 选择2 JS lib不在Rails应用程序上工作,javascript,ruby-on-rails,jquery-select2,Javascript,Ruby On Rails,Jquery Select2,我得到了这个Rails应用程序,它利用了Select2JS库,但我不明白为什么它没有设置我的选择列表的样式。它正在生产中 我从生产服务器的快照创建了一个临时服务器 我已经在成功的地方运行了rakeassets:clobber&&rakeassets:precompile。我已经检查了编译的application.js和application.css文件,其中包含了js代码和样式 我可以运行$.classIwant.select2;在控制台中,它设置了选择列表的样式,但当我选择一个选项时,它什么也

我得到了这个Rails应用程序,它利用了Select2JS库,但我不明白为什么它没有设置我的选择列表的样式。它正在生产中

我从生产服务器的快照创建了一个临时服务器

我已经在成功的地方运行了rakeassets:clobber&&rakeassets:precompile。我已经检查了编译的application.js和application.css文件,其中包含了js代码和样式

我可以运行$.classIwant.select2;在控制台中,它设置了选择列表的样式,但当我选择一个选项时,它什么也不做

在运行$.classIwant.select2之后,我也会遇到此错误;在控制台中:

[违规]执行JavaScript时强制回流耗时49毫秒

请原谅我的无知,因为这是我第一次使用这个JS库。任何帮助都将不胜感激。提前谢谢

更新1: 当我将下面的代码复制到控制台并手动运行App.init时;它起作用了。为什么页面没有加载这个

(function() {
  window.App || (window.App = {});

  App.init = function() {
    $(".classIwant").select2();
    $('#search').on("keyup", function() {
      return searchTable($(this).val());
    });
    $('#search-list').on("keyup", function() {
      return searchList($(this).val());
    });
    $("#the_id").on('change', function(e) {
      return $(this).parent().submit();
    });
    return $('#preloader').delay(200).fadeOut();
  };

  $(document).on("page:change", function() {
    return App.init();
  });

  $(window).on("load", function() {
    $('#status').fadeOut();
    return $('#preloader').delay(200).fadeOut();
  });

}).call(this);
更新2: 这是生产代码。这有点不同。我不确定是什么原因导致编译器缩小了生产代码并以不同的方式编译它。我在控制台中使用了漂亮的打印,以便看得更清楚一些。有什么想法吗

function() {
    window.App || (window.App = {}),
    App.init = function() {
        return $(".classIwant").select2(),
        $("#search").on("keyup", function() {
            return searchTable($(this).val())
        }),
        $("#search-list").on("keyup", function() {
            return searchList($(this).val())
        }),
        $("#the_id").on("change", function() {
            return $(this).parent().submit()
        }),
        $("#preloader").delay(200).fadeOut()
    }
    ,
    $(document).on("page:change", function() {
        return App.init()
    }),
    $(window).on("load", function() {
        return $("#status").fadeOut(),
        $("#preloader").delay(200).fadeOut()
    })
}
.call(this),

我发现问题在于不同的ruby、bundler和gem版本。我不确定是哪个gem导致了问题,但我通过以下步骤修复了问题。您所处的环境可能有点不同,但这应该会让您走上正确的道路:

从生产服务器、逐行、Gemfile和Gemfile.lock复制到我的本地计算机 在我的本地机器上,我安装了与使用rvm生产相同版本的ruby 2.2.1。 使用gem安装bundler安装的bundler 1.14.0-v1.14.0 1.14.0是生产服务器上的版本。 运行了bundle\u 1.14.0\u安装,但失败,因为本地mysql是新的 因为我的mysql的本地版本是全新的,所以我不得不使用自制软件将其降级。看见 再次运行捆绑包1.14.0安装,成功。 由于文件现在已经更改,我提交了这些更改 我把这些更改拖到了我的服务器上 暂存服务器ruby版本与生产2.2.1不匹配 必须在临时服务器上安装rvm,幸运的是我使用的是ubuntu,所以我只使用了这些说明。确保遵循终端输出。 通过rvm安装2.2.1安装ruby 已在服务器上运行捆绑包安装,成功。所有宝石配套生产。 在临时服务器上运行rake资产:clobber&&rake资产:预编译。 重新启动web服务器。
选择选项时有错误吗?当我第一次加载页面时没有错误。当我运行$.classIwant.select2;select现在已设置样式。当我点击选择列表时,控制台日志[Violation]“mousedown”处理程序在执行JavaScript时强制回流了152毫秒[Violation]43毫秒它加载了大量的数据列表吗?还有。。单击时不会发生任何事情还有其他原因。不,它没有加载大量数据。然后是应用程序中的其他原因导致了它,。。然后选择2不作为副作用使用。