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导致了这个问题,但我通过以下步骤解决了这个问题。 你的环境可能有点不同,但这应该让你走上正确的道路:
- 从生产服务器,line for line,Gemfile和Gemfile.lock复制到我的本地机器
- 在我的本地机器上,我使用rvm安装了与生产相同版本的ruby(2.2.1)。
- 安装捆绑器1.14.0使用
gem install bundler -v 1.14.0
(1.14.0是生产服务器上的。) - Ran
bundle _1.14.0_ install
,失败因为本地mysql是新的 - 由于我的本地版本的mysql是新的,我不得不使用自制软件降级。 请参阅Homebrew的多个MySQL版本
-
bundle _1.14.0_ install
再bundle _1.14.0_ install
,成功。 - 由于Gemfiles现在已经改变,我承诺了这些改变
- 我把这些更改拉到我的服务器上
- 暂存服务器ruby版本与生产2.2.1不匹配
- 不得不在登台服务器上安装rvm,幸运的是我正在使用ubuntu所以我只是使用这些指令RVM包用于Ubuntu 。 确保遵循终端输出。
- 通过
rvm install 2.2.1
安装ruby - Ran
bundle install
在服务器上,成功。 所有gem都与生产相匹配。 - Ran
rake assets:clobber && rake assets:precompile
在登台服务器上rake assets:clobber && rake assets:precompile
。 - 重新启动的Web服务器。