在 Rails 3.1中添加一个新的资产路径

有人知道如何在 Rails 3.1中将另一个文件夹添加到资产管道中吗?

我想用 app/assets/images的服务方式来服务 app/assets/fonts


更新: 5-7-2013

只是为了给以后发现这个问题需要在 application.rb 文件中明确添加资产路径的人们添加一些说明:

config.assets.paths << "#{Rails.root}/app/assets/fonts"

然而,因为上面的路径是在 app/assets下面,所以你不需要明确地添加它,你只需要重新启动你的 Rails 应用程序,这样 Sprockets 就可以把它拾起来。

您必须显式地添加 app/assetslib/assetsvendor/assets之外的路径,只要记住,当 Sprockets 在应用程序加载时在文件夹中获取新文件时,根据我的经验,如果不重新启动,它不会在资产路径中获取新文件夹。

41727 次浏览

Andrew,app/assets/fontsimages实际上已经在你的资产加载路径中了。所以你可以用同样的方式指向资产: <%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>[1]或者你是如何引用你的图像的。

我也花了很长时间才搞清楚这件事。我仍然不知道如果在 app/assets/fontsapp/assets/images中有一个同名的文件会发生什么。

[1]假设你有一个字体在 app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot

Andrew,Jason,同意。 FWIW 我把这个放在 config/application.rb 旁边

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"

在 Rails 3.1.0中,我可以在不添加新路径的情况下确认它的工作原理。Rc4(据推测更高)。我跳过了我的服务器,你可能也会这么做。

它在不添加路径的情况下工作,但是要注意您正在为资产使用一个有效的文件名。

url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');

例如,在本例中,将 ?#iefix保留在字体文件名之外

Create assets/fonts folder and add some font on it and use theme on your css file as follow

@font-face {
font-family: Sawasdee;
src: url(Sawasdee.ttf);
}

通过创建 app/assets/imagesapp/assets/fonts,它们将自动添加到资产路径中。

创建 Rails 控制台后打开它们并检查:

y Rails.application.config.assets.paths

(yyaml方法的快捷方式)