我正在开发Rails 3.1应用程序,它包含第三方JS Calendar Picker(jsDatePick)。 jsDatePick有一整堆图像,位于images / calendar / img /中。
运行rake资产:预编译预编译它们全部,但库仍然在images / calendar / img(不是assets / calendar / img)中查找图像。我可以将目录更改为assets / calendar / img,但它不会附加指纹哈希。
关于如何解决这样的问题的想法?
以下是与此JS库一起使用的一些CSS的示例:
.JsDatePickBox .boxLeftWall .leftTopCorner{ margin:0; padding:0; width:7px; height:8px; background:url(/assets/calendar/img/boxTopLeftCorner.png) left top no-repeat; overflow:hidden; }
.JsDatePickBox .boxLeftWall .leftBottomCorner{ margin:0; padding:0; width:7px; height:8px; background:url(/assets/calendar/img/boxBottomLeftCorner.png) left top no-repeat; overflow:hidden; }
.JsDatePickBox .boxLeftWall .leftWall{ margin:0; padding:0; width:7px; background:url(/assets/calendar/img/boxSideWallPx.gif) #ffffff left top repeat-y; overflow:hidden; }
虽然我肯定在这里看到一个问题(应该使用资产标签,因为这些图像在没有指纹哈希的资产文件夹中不存在),我特意寻找的一些图像不在任何CSS文件中应用程序。我现在正在寻找确定他们被叫的地方。
看起来其他图像是通过javascript应用的。这是一个例子:
if (parseInt(aDayDiv.getAttribute("isToday")) == 1){
this.setC(aDayDiv, "dayDownToday");
aDayDiv.style.background = "url(" + this.oConfiguration.imgPath + this.oConfiguration.cellColorScheme + "_dayDown.gif) left top no-repeat";
} else {
this.setC(aDayDiv, "dayDown");
aDayDiv.style.background = "url(" + this.oConfiguration.imgPath + this.oConfiguration.cellColorScheme + "_dayDown.gif) left top no-repeat";
}
oConfiguration.imgPath定义如下:
g_jsDatePickImagePath = "/assets/calendar/img/";
this.oConfiguration.imgPath = (g_jsDatePickImagePath.length != null) ? g_jsDatePickImagePath : "/images/calendar/img/";
感谢您的帮助。
答案 0 :(得分:0)
答案是升级到Rails 3.1.1+(我升级到rails 3.1.2)并且运行rake资产的Rails解决了这个问题:预编译:nondigest导致非消化版本的资产。