我得到了这个Rails应用程序,该应用程序使用了select2 JS库,但无法弄清楚为什么它没有设计我的选择列表样式。它正在生产中。
我从生产服务器的快照创建了一个登台服务器。
我已经成功运行rake assets:clobber && rake assets:precompile
。我已经检查了已编译的application.js和application.css文件,并且其中包含JS代码和样式。
我可以在控制台中运行$(".classIwant").select2();
并为选择列表设置样式,但是当我选择一个选项时它什么也没做。
在控制台中运行$(".classIwant").select2();
后,我也收到此错误:
[Violation]执行JavaScript时的强制重排花费了49ms
请原谅我的无知,因为这是我第一次使用此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),
答案 0 :(得分:0)
我发现问题是不同的红宝石,捆绑器和宝石版本。我不确定是哪个宝石引起了该问题,但是我通过以下步骤解决了该问题。您的环境可能有所不同,但这应该可以使您走上正确的路:
gem install bundler -v 1.14.0
安装了捆绑程序1.14.0(1.14.0是生产服务器所具有的工具。)bundle _1.14.0_ install
,它失败了,因为本地mysql是新的bundle _1.14.0_ install
,rvm install 2.2.1
安装了红宝石bundle install
,成功。所有与之匹配的宝石。rake assets:clobber && rake assets:precompile
。