rails 4资产管道供应商资产图像未进行预编译

ban*_*sto 60 asset-pipeline ruby-on-rails-4

我使用rails 4和ruby 1.9.3作为我的应用程序和fancybox2-railsgem,但是资产管道存在一个普遍的问题.如果我运行rake task了预编译,那么一切都只是在出细腻的图像vendor/assets/images../gems/ruby-1.9.3-p327/gems/fancybox2-rails-0.2.1/vendor/assets/images.来自这两个文件夹的图像没有被预编译,最终我遇到了与不存在的图像的死链接的问题.有什么建议?

ban*_*sto 79

默认情况下,图像仅包含在app/assets文件夹中.因此解决方案是将此行添加到config/application.rb

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif)
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但这个设置*应该*进入config/environments/production.rb文件.但是,目前这已经在rails 4.0.0.beta1中被破坏(参见https://github.com/rails/rails/issues/9572和https://github.com/rails/sprockets-rails/pull/36) (3认同)
  • 这没有供应商/资产链接?它似乎对我不起作用. (3认同)

roc*_*cLv 9

听起来Sporker无法自动加载来自供应商/资产/图像的图像.

2.2资产组织管道资产可以放置在三个位置之一的应用程序内:app/assets,lib/assets或vendor/assets.

app/assets适用于应用程序拥有的资产,例如自定义图像,JavaScript文件或样式表.

lib/assets适用于您自己的库代码,这些代码并不真正适合应用程序的范围或跨应用程序共享的库.

vendor/assets适用于外部实体拥有的资产,例如JavaScript插件和CSS框架的代码

从描述来自guides.rubyonrails.org,我不认为他们无意地忽略了供应商/资产/图像.

所以我刚刚添加了以下内容:

#config/application.rb
config.assets.paths << Rails.root.join("vendor", "assets", "images")
Run Code Online (Sandbox Code Playgroud)

而且,我解决了我的问题.我希望这对你有用.


tir*_*adc 6

对于我的Rails 4.2.x项目,我只是将供应商图像移动到vendor/assets/images并添加到application.rb:

config.assets.precompile += %w(vendor/assets/images/*)
Run Code Online (Sandbox Code Playgroud)

适用于开发和生产.