Rails 3.1资产管道和第三方JS日历

时间:2012-02-14 22:36:48

标签: ruby-on-rails-3.1 javascript asset-pipeline

我正在开发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/";

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

答案是升级到Rails 3.1.1+(我升级到rails 3.1.2)并且运行rake资产的Rails解决了这个问题:预编译:nondigest导致非消化版本的资产。