5

使用 Rails 3.2.13 我得到不同的资产路径,asset_path具体取决于我是否使用.css.sass或只是.css预期的?

例如,如果我的app/assets/stylesheets/foo.css.sass样式表目录中只有一个,而没有别的,如果我不小心asset_path在 sass 版本中使用了一个,我会得到一个不存在的文件:

Loading production environment (Rails 3.2.13)
irb(main):001:0> helper.asset_path "foo.css.sass"
=> "/assets/foo-b148cf064a02aef053d2902b6a1fa5a9.css"

使用asset_pathwith just plaincss会产生正确的路径。

irb(main):002:0> helper.asset_path "foo.css"
=> "/assets/foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css"

foo-1b1fbb65d54bbc52b702c0f1d2efcc38.css在我运行时生成rake assets:precompile。有谁知道不同的哈希值来自哪里?

4

1 回答 1

0

快速回答:我认为哈希值是从编译文件的最新 mtime 生成的。

长答案:我四处寻找并无法确认,但我相信我已经读过这个哈希类型的字符串是从您要编译的所有文件的最新 mtime 生成的。

所以我的猜测是 foo.css 比 foo.css.sass 更新,因此 mtime 在预编译时获胜。

如果您想进一步研究它,我已经digest_path从内部跟踪它到一个方法digest_for

于 2013-11-09T20:48:12.040 回答