2

我决定托管我自己的 jQuery 移动文件,因为 gem jquery_mobile_rails 仅包含 1.3.0 版本,而我想确保我始终拥有最新版本的 jQM。事实证明这非常简单,因为我刚刚在我的资产文件夹中的 javascripts 下添加了 js 文件,在 stylesheets 下添加了 css。

我将图标按钮复制到 /assets/images 和 /assets/stylesheets/images。它们在开发中正确显示,但在生产中显示不正确。我的控制台正在显示正在预编译的图像。

我在 production.rb 中有以下内容

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif application-print.css)
4

1 回答 1

2

Rails 3.2 会在预编译期间生成指纹 ( picture-df71a1234da231a124a.png) 和非指纹 ( picture.png) 资产,而 Rails 4 不再生成非指纹版本。

最有可能的是,来自 jQuery Mobile 的 CSS 文件包含如下引用:

background-image: url(images/icons-18-white.png)

问题是 CSS 文件不知道指纹应该是什么。最好的解决方案是使用 Rails 的资产路径助手。首先,确保该文件是一个 SCSS 文件(只需将其重命名,使其类似于jquery.mobile-1.3.1.css.scss)。这将告诉 rails 使用 Sass 编译它。

接下来,url(...)将 css 文件中的所有条目更改为image-url(...). 确保在路径周围添加引号。例如,这将加载文件app/assets/images/images/icons-18-white.png(成为public/assets/images/icons-18-white.png生产环境)。

background-image: image-url("images/icons-18-white.png")

部署这些更改后,jQuery 移动 css 文件应进行预编译,生成的文件应包含正确的指纹 URL。

于 2013-07-12T05:57:28.087 回答