【问题标题】:Rails4: image_url not generating digest in controllerRails4:image_url 不在控制器中生成摘要
【发布时间】:2016-04-05 07:31:58
【问题描述】:

我有这个代码:

class ExampleController < ApplicationController
  include ActionView::Helpers::AssetUrlHelper

  def show
    respond_to do |format|
      msg = { status: "ok", message: "Success!", image_url: image_url('image.png') }
      format.json  { render :json => msg }
    end
  end
end

这会回复我这个回复:

{ status: "ok", message: "Success!", image_url: 'images/image.png' }

我期待这样的事情:

{ status: "ok", message: "Success!", image_url: 'assets/image-37bf76be1.png' }

有什么问题?

【问题讨论】:

  • 如果你当前的 Rails 环境不是生产环境,这是完全正常的。
  • 我的环境是开发环境,但是当我请求 http://localhost:3000/images/image.png 时它返回 404。当我在 rails 视图中使用“image_url”时,它可以正常工作并添加摘要哈希。为什么它在控制器中不起作用?

标签: ruby-on-rails assets sprockets


【解决方案1】:

如果你想从控制器渲染图像,我相信你需要使用view_context.image_url

【讨论】:

    【解决方案2】:

    正如born4new 建议的那样,您需要使用image_url 来正确引用资产管道中的图像。 但是,我不建议在此处使用资产管道。请记住,当您预编译资产时,您的资产摘要 URL 可能会发生变化。由于您从 API 提供此值,这意味着您使用的 URL 响应可能会在您重新编译资产后呈现 404。

    相反,您应该考虑将您的图片作为来自public/ 文件夹的静态资源提供。这样,您的 API 的任何使用者都可以在您重新部署或重新生成资产后可靠地访问这些文件。

    【讨论】:

    • 如果您没有缓存问题,这是一个很好的解决方案。
    猜你喜欢
    • 2014-03-06
    • 2020-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2014-07-04
    • 1970-01-01
    • 2012-01-16
    相关资源
    最近更新 更多