Select2 JS lib不能在Rails应用程序上运行

我得到了这个利用select2 JS库的Rails应用程序,无法弄清楚为什么它没有为我的选择列表设置样式。 它正在生产中。

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

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

我可以运行$(".classIwant").select2(); 在控制台中它选择列表的样式,但是当我选择一个选项时它不会做任何事情。

我在运行$(".classIwant").select2();之后也遇到了这个错误$(".classIwant").select2(); 在控制台中:

[违规]执行JavaScript时强制重排需要49毫秒

请原谅我的无知,因为这是我第一次使用这个JS lib。 任何帮助将非常感激。 提前致谢。

更新#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,看它好一点。 有任何想法吗?

 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导致了这个问题,但我通过以下步骤解决了这个问题。 你的环境可能有点不同,但这应该让你走上正确的道路:

  1. 从生产服务器,line for line,Gemfile和Gemfile.lock复制到我的本地机器
  2. 在我的本地机器上,我使用rvm安装了与生产相同版本的ruby(2.2.1)。
  3. 安装捆绑器1.14.0使用gem install bundler -v 1.14.0 (1.14.0是生产服务器上的。)
  4. Ran bundle _1.14.0_ install ,失败因为本地mysql是新的
  5. 由于我的本地版本的mysql是新的,我不得不使用自制软件降级。 请参阅Homebrew的多个MySQL版本
  6. bundle _1.14.0_ installbundle _1.14.0_ install ,成功。
  7. 由于Gemfiles现在已经改变,我承诺了这些改变
  8. 我把这些更改拉到我的服务器上
  9. 暂存服务器ruby版本与生产2.2.1不匹配
  10. 不得不在登台服务器上安装rvm,幸运的是我正在使用ubuntu所以我只是使用这些指令RVM包用于Ubuntu 。 确保遵循终端输出。
  11. 通过rvm install 2.2.1安装ruby
  12. Ran bundle install在服务器上,成功。 所有gem都与生产相匹配。
  13. Ran rake assets:clobber && rake assets:precompile在登台服务器上rake assets:clobber && rake assets:precompile
  14. 重新启动的Web服务器。