【问题标题】:Generating an img-url in a rails app deployed on heroku在部署在 heroku 上的 rails 应用程序中生成 img-url
【发布时间】:2013-10-14 17:21:43
【问题描述】:

我对检索@player 的服务器进行AJAX 调用,并将其作为data.player 返回给AJAX 调用。对于每一个 Player 对象,在 assets/images 文件夹中都有对应的图片保存,格式为"#{first_name}_#{last_name}"

我的 AJAX 调用(在 home.js.coffee 中)将图像标签插入到我的 html 中,如下所示:

< img src="/assets/' + data.player1.first_name + '_' + data.player1.last_name + '.jpg" alt="' + data.player1.first_name + '_' + data.player1.last_name + '" class= "playerpic" >' +`

虽然这在我的开发环境中有效,但当部署在 Heroku 上时,图像不会呈现,并且经过检查,Heroku 中的图像标签是这样的:

<img alt="Adrian_Peterson" class="playerpic" src="/assets/Adrian_Peterson-984288afb9b867130c88802cd5a1d80a.jpg">
  • 为什么要将此字母数字代码添加到我的图片名称中?

  • 有没有办法防止这种情况发生?

  • 如果没有,我如何将图像标签从home.js.coffee 插入到我的 HTML 中,并说明 Heroku 添加到我的图像名称中的字母数字代码?

谢谢!

【问题讨论】:

    标签: jquery ruby-on-rails ajax image heroku


    【解决方案1】:

    • 添加到图像标签末尾的字母数字是在您编译资产时由 rails 添加的,有关该主题的更多信息,请参阅the Rails guide,但基本上它有助于在人们的浏览器上缓存您的资产。李>
    • 默认情况下,指纹在生产环境中启用,而在所有其他环境中禁用。您可以通过 config.assets.digest 选项在配置中启用或禁用它。

    • 将图片放到页面上最简洁的方法可能是在 JSON 响应中返回图片路径,而不是每次都尝试构建它。

    【讨论】:

    • 酷,谢谢。我可以使用什么来获取控制器中的图像路径,以便可以在我的 JSON 响应中返回它?
    • 最简单的方法可能是使用像rabl 这样的JSON 模板系统,而​​不是将所有这些都放在控制器中。也就是说,您可以使用"#{player1.first_name}_#{player1.last_name}" 之类的字符串传递它,然后在您的 JS 中解释它以创建图像标签。
    • 谢谢。我现在正在传递一个这样的字符串,但是我无法弄清楚如何使用嵌入在 JS 中的 javascript 或 ERB 将其转换为考虑字母数字代码的 image_tag。你知道如何做到这一点吗?再次感谢
    • 您不需要考虑这一点,它会找到它们。图片是否都在您的app/assets/images 目录中?如果您尝试动态上传它们,您的问题是 Heroku 不允许本地存储,您必须考虑将它们存储在 S3 之类的东西上。
    • 如果这仍然是一个问题,请尝试在本地生产中运行您的服务器以诊断问题(rails s -e production)。从这里我很难猜到。
    猜你喜欢
    • 2014-08-08
    • 2016-06-23
    • 2020-05-15
    • 1970-01-01
    • 2015-03-04
    • 2013-01-08
    • 2018-06-10
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多