有人知道如何在Rails 3.1中向资产管道添加另一个文件夹吗?
我希望以app/assets/fonts
的方式投放app/assets/images
。
更新:5-7-2013
在app.rb文件中为未来发现此问题以明确添加资产路径的人添加一些说明:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
但是,由于上述路径位于app/assets
之下,因此您无需明确添加它,只需重新启动rails应用程序即可让Sprockets接收它。
您必须明确添加app/assets
,lib/assets
或vendor/assets
之外的路径,并且只需记住,当Sprockets选择您文件夹中存在的新文件时加载应用程序,根据我的经验,它不会在没有重新启动的情况下在资产路径中获取新文件夹。
答案 0 :(得分:74)
Andrew,app/assets/fonts
实际上已经在您的资产加载路径中,与images
一起。因此,您可以以相同的方式指向资产:<%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>
[1]或者您引用图像的方式。
我花了一些时间来围绕这个问题。如果app/assets/fonts
和app/assets/images
中存在同名文件,我仍然不知道会发生什么。
[1]假设您的字体为app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot
答案 1 :(得分:43)
# Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
答案 2 :(得分:8)
通过创建app/assets/images
和app/assets/fonts
,它们将自动添加到资源路径中。
创建之后打开rails控制台并检查:
y Rails.application.config.assets.paths
(y
是yaml
方法的快捷方式)
答案 3 :(得分:3)
它可以在不添加路径的情况下工作,但请注意您使用的是资产的有效文件名。
url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');
例如,在这种情况下,请将?#iefix
留在字体文件名
答案 4 :(得分:2)
我可以确认它没有在Rails 3.1.0.rc4中添加配置的新路径(并且假定更高)。我蹦了我的服务器,你也可以这样做。
答案 5 :(得分:1)
创建assets/fonts
文件夹并在其上添加一些字体并在css文件中使用主题,如下所示
@font-face {
font-family: Sawasdee;
src: url(Sawasdee.ttf);
}