【问题标题】:Rails - absolute URL for images in assets path for herokuRails - heroku 资产路径中图像的绝对 URL
【发布时间】:2015-11-05 06:19:15
【问题描述】:

我在app/assets/images/admin 目录下有图像。

在开发中,我使用过类似的方法来获取 URL

"#{root_url}assets/admin/filename.jpg"

但它不适用于 Heroku。

那么在 Heroku 上的 assets 文件夹下引用图像的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails url heroku asset-pipeline


    【解决方案1】:

    assets文件夹下的参考图片

    如果您使用image_tag,无论您是在production 还是development,您都可以调用相对路径:

    <%= image_tag "admin/filename.jpg" %>
    

    --

    如果您在 CSS 中调用图像,则需要使用 asset-path or asset-url:

    #app/assets/stylesheets/application.css
    .header {
       background: asset-url("admin/filename.png");
    }
    

    你遇到的问题与asset fingerprinting有关。

    当您预编译您的资产(在 Heroku 中是必需的)时,所有 imagescssjavascript 等都将放入 public/assets 文件夹中。更重要的是,每个文件都经过指纹(附加了一些数字):

    global-908e25f4bf641868d8683022a5b62f54.css
    

    因此,当您处于“生产”状态时,调用#{root_url}assets/admin/filename.jpg 将导致404,因为该文件将不存在

    您需要使用一个路径助手(如上)来确保 Rails 能够挑选出正确的文件,无论您使用的是哪种环境。

    【讨论】:

      【解决方案2】:

      使用image_tag('admin/filename.jpg')获取带有图片部分的html:

      development# => <img alt="Rails" src="http://yourhost/assets/admin/filename.jpg" />
      production# => <img alt="Rails" src="http://yourhost/assets/admin/filename-5643564625453543.jpg" />
      

      使用image_path("admin/filename.jpg") 获取路径如下:

      development# => "/assets/admin/filename.jpg"
      production# => "/assets/admin/filename-5643564625453543.jpg"
      

      使用image_url("admin/filename.jpg") 获取完整的网址,如下所示:

      development# => "http://yourhost/assets/admin/filename.jpg"
      production# => "http://yourhost/assets/admin/filename-5643564625453543.jpg"
      

      您可以获取更多信息

      The Assets Pipeline

      Asset URL Helper

      【讨论】:

      • 你的意思是image_url
      • 不,我的意思是 image_url。你将如何使用它?要在您的 rails 应用程序中显示图片?
      • @Swards 我已经更新了。我希望现在更清楚了。
      • @dthal 嘿,谢谢伙计。但即使我尝试使用 http://myhost.com/assets/admin/filename.jpg 访问图像文件,我也会收到 page doesn't exist 错误。
      • @Swards 你好,Swards。如果我尝试使用 http://myhost.com/assets/admin/filename.jpg 访问图像文件,我会在 heroku 中收到 page doesn't exist 错误。有什么帮助吗?
      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 2014-05-01
      • 1970-01-01
      • 2014-12-29
      • 2014-03-08
      • 1970-01-01
      相关资源
      最近更新 更多