78

有谁知道如何在 Rails 3.1 的资产管道中添加另一个文件夹?

我想以app/assets/fonts同样的方式app/assets/images服务。


更新:2013 年 5 月 7 日

只是为将来发现此问题的人添加一些说明,以在您的 application.rb 文件中显式添加资产路径:

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

但是,由于上述路径在您的下方,app/assets您不必显式添加它,您只需重新启动您的 rails 应用程序,以便 Sprockets 可以将其拾取。

app/assets您将必须明确添加,lib/assets或之外的路径vendor/assets,并且只需记住,虽然 Sprockets 会在应用程序加载时存在的文件夹中拾取新文件,但根据我的经验,它不会在资产路径中拾取新文件夹重新启动。

4

6 回答 6

74

Andrew,app/assets/fonts实际上已经在您的资产加载路径中,以及images. 因此,您可以以相同的方式指向资产:<%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>[1] 或您引用图像的方式。

我也花了一些时间来解决这个问题。app/assets/fonts我仍然不知道如果在and中有一个同名的文件会发生什么app/assets/images

[1] 假设您的字体位于app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot

于 2011-06-28T20:26:04.600 回答
43

安德鲁、杰森同意了。FWIW我把它放在我的 config/application.rb 旁边

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
于 2011-07-22T19:59:09.600 回答
8

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

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

y Rails.application.config.assets.paths 

y是该方法的快捷yaml方式)

于 2013-11-03T09:31:15.717 回答
3

它无需添加路径即可工作,但请注意您为资产使用了有效的文件名。

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

例如,在这种情况下,请?#iefix在字体文件名之外保留

于 2012-10-11T21:05:03.387 回答
2

我可以确认它可以在不向 Rails 3.1.0.rc4 中的配置添加新路径的情况下工作(可能更高)。我反弹了我的服务器,你也可以这样做。

于 2011-08-12T00:32:20.873 回答
1

创建assets/fonts文件夹并在其上添加一些字体并在您的 css 文件上使用主题,如下所示

@font-face {
  font-family: Sawasdee;
  src: url(Sawasdee.ttf);
}
于 2013-05-04T17:25:32.837 回答