【问题标题】:Rails 3.1 does not precompile images that are not referenced by CSS?Rails 3.1 不预编译 CSS 未引用的图像?
【发布时间】:2011-10-04 17:39:40
【问题描述】:

我收到以下错误:

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Photos#edit

Showing .../app/views/photos/_form.html.haml where line #49 raised:

taxonomy/focus-building.jpg isn't precompiled

Extracted source (around line #49):

46:                             = focus.code
47:                         .tooltip
48:                             %span.name= focus.name
49:                             = image_tag("taxonomy/focus-#{focus.code.downcase.dehumanize}.jpg")
50:                 / Help Overlay
51:                 .help
52:                     %a.overlay{:href=>"#", :rel=>'#help-focus'} Learn more about focus

此图像文件位于app/assets/images/taxonomy/focus-building.jpg。我已经运行了rake assets:precompile RAILS_ENV=production,但据我所知,图像并没有被复制到public/assets 目录中。

奇怪的是,在 SCSS 中使用 image-url() 引用的所有资产都可以正常工作。为什么使用image_tag 引用此图像时报告未预编译?

【问题讨论】:

  • 您使用的是 Rails 3.1.1 还是 3.1.0?
  • 我正在为此添加 +1。我在 Rails 3.1.3 上,我遇到了同样的问题。我即将准备好对资产管道进行打击。
  • @Andrew:你最终让它工作了吗?我在 image_tag 提供的资产无法在生产中工作时遇到同样的问题!
  • @bpn 老实说,我终于将需要在 CSS 之外引用的图像移到了公共文件夹中。我没有回去尝试不同的修复方法,可能有更好的方法,或者问题可能随着 Rails 的更新而消失...我没有测试过,所以我不知道。
  • @Andrew- 我开始知道我的问题出在哪里......图像一直在工作!我只需要清空浏览器的缓存并重新加载页面!这一定与到期标题有关..但现在一切都很好..

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


【解决方案1】:

如果您启用了 assets.digest 选项,这将在名称末尾添加一个哈希,因此对该文件的静态引用将不再起作用,请更改任何静态引用的资产,以便它们使用辅助方法。

【讨论】:

  • 对于它的价值,这似乎对我有所帮助。不知何故,在生产模式下启用摘要最终使服务器更可靠地提供资产。不过,我仍然想打资产管道。
【解决方案2】:

我对 image_tag 有同样的问题。我通过使用实时编译解决了这个问题。

在生产中.rb

  • config.assets.compile = true

【讨论】:

  • 好吧,除了我的部署环境暂时不能进行实时编译之外,这样就可以了。所以不幸的是,这不是一个选择。
  • 这是一种解决方法,因此可以在紧要关头工作 - 但如果您担心性能,它仍然不应该在生产中真正打开(让我们面对现实 - 在生产中,你担心性能)。
猜你喜欢
  • 2011-11-30
  • 1970-01-01
  • 2012-01-05
  • 2011-12-20
  • 1970-01-01
  • 2013-12-25
  • 1970-01-01
  • 2012-06-03
  • 2012-04-07
相关资源
最近更新 更多