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

时间:2011-06-28 16:42:05

标签: ruby-on-rails path ruby-on-rails-3.1 asset-pipeline

有人知道如何在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/assetslib/assetsvendor/assets之外的路径,并且只需记住,当Sprockets选择您文件夹中存在的新文件时加载应用程序,根据我的经验,它不会在没有重新启动的情况下在资产路径中获取新文件夹。

6 个答案:

答案 0 :(得分:74)

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

我花了一些时间来围绕这个问题。如果app/assets/fontsapp/assets/images中存在同名文件,我仍然不知道会发生什么。

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

答案 1 :(得分:43)

安德鲁,杰森,同意了。 FWIW我把它放在

旁边的config / application.rb中
  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"

答案 2 :(得分:8)

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

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

y Rails.application.config.assets.paths 

yyaml方法的快捷方式)

答案 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);
}