Ruby on rails 是否仅对图像禁用Rails 3.1资源管道?

Ruby on rails 是否仅对图像禁用Rails 3.1资源管道?,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,asset-pipeline,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,Asset Pipeline,Ruby On Rails 3.2,我正在将Rails 3应用程序升级到3.2并设置资产管道。这对于css/js来说非常好,但我并不认为在图像中使用它有什么意义,不幸的是,我有大量的css引用/images/*.png等等 是否有方法仅对图像禁用资产管道,以便image\u标记(“x.png”)返回,而不是?谢谢 看看这个宝石: ,它应该做您需要的:) 否则,您可以将不希望包含在资产管道中的资产从应用程序/资产移回公共(例如,公共/图像)。无需gem,一切都应按预期工作。您可以在rails控制台中尝试以下操作: helper.im

我正在将Rails 3应用程序升级到3.2并设置资产管道。这对于css/js来说非常好,但我并不认为在图像中使用它有什么意义,不幸的是,我有大量的css引用/images/*.png等等

是否有方法仅对图像禁用资产管道,以便
image\u标记(“x.png”)
返回
,而不是
?谢谢

看看这个宝石: ,它应该做您需要的:)


否则,您可以将不希望包含在资产管道中的资产从应用程序/资产移回公共(例如,公共/图像)。无需gem,一切都应按预期工作。

您可以在rails控制台中尝试以下操作:

helper.image_path "foo" #=> "/assets/foo"

module OldImagePath
  def image_path(source)
    asset_paths.compute_public_path(source, 'images')
  end
  alias_method :path_to_image, :image_path
end
ActionView::Base.send :include, OldImagePath

helper.image_path "foo" #=> "/images/foo"
例如,您可以将其放置在初始值设定项中。默认情况下,ActionView::Base包括ActionView::Helpers::AssetTagHelper和链轮::Helpers::RailsHelper,两者都定义了映像路径,但后者优先。我包括我自己的模块,它优先于所有模块(其中的代码取自ActionView::Helpers::AssetTagHelper)


尽管如此,将资产管道用于图像也是有意义的。他们在文件名中获得哈希和,这样就可以在客户端永久缓存,而不必询问服务器文件是否已更改。

有人能确认这一点吗?最后,我咬紧牙关,拥抱资产管道获取图像。谢谢!我使用这种技术来防止AssetNotPrecompiledError在生产中产生500服务器错误,如果在解析通过资产管道的映像路径时发生错误。在我的image_path重写中,我只调用“super(source)”,但添加了一个rescue子句,记录错误并为路径返回“#”。正如您所建议的,我将“ActionView::Base.send”行放入初始值设定项中。很好用!