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

And*_*rew 78 ruby-on-rails path ruby-on-rails-3.1 asset-pipeline

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

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


更新:5-7-2013

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

config.assets.paths << "#{Rails.root}/app/assets/fonts"
Run Code Online (Sandbox Code Playgroud)

但是,由于上面的路径app/assets不在你明确添加它,你只需要重新启动rails应用程序,这样Sprockets就可以把它拿起来.

你必须明确地添加是外面的路径app/assets,lib/assets或者vendor/assets,只是记得,虽然链轮拿起新的文件夹是存在,当你的应用程序中加载,在我的经验,它不拿起资产路径新的文件夹,而不重启.

Jas*_*rry 74

安德鲁,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

  • 我也偶然发现了它,并且它使用默认设置,但是在应用程序初始化期间扫描目录,因此如果在服务器运行后添加类似字体的文件夹,则会得到404.因此,当您添加资产管道中的目录. (39认同)
  • 为了它的价值,我尝试了这个,它似乎没有用.然后我猜到了`config.assets.paths <<"#{Rails.root}/app/assets/fonts"`这就行了.我认为你应该自动包含`/ assets`下的任何内容是正确的,但出于某些原因,我给它404直到我将上面的行添加到我的`application.rb`文件中.我会接受你的答案,因为我认为在发布完成后它会是正确的,并且因为这个评论被添加到阅读它的人身上可以解决它:) (21认同)
  • 详细说明同名文件:当存在命名冲突时,`config.assets.paths`数组中出现的第一个路径是选择的文件.这可以通过使用`asset_path()`帮助程序并指定目录来避免. (4认同)

Pet*_*ich 43

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

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Run Code Online (Sandbox Code Playgroud)

  • 从我所看到的,首选的写作方式现在是`Rails.root.join('app','assets','fonts')` (15认同)

oco*_*odo 8

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

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

y Rails.application.config.assets.paths 
Run Code Online (Sandbox Code Playgroud)

(yyaml方法的快捷方式)