Rails4: image_url 没有在控制器中生成摘要
Rails4: image_url not generating digest in controller
我有这个代码:
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
这个 return 我这个回复:
{ status: "ok", message: "Success!", image_url: 'images/image.png' }
我希望是这样的:
{ status: "ok", message: "Success!", image_url: 'assets/image-37bf76be1.png' }
问题是什么?
如果你想从控制器渲染图像,我相信你需要使用 view_context.image_url
。
正如 born4new 所建议的,您需要使用 image_url
来正确引用资产管道中的图像。 但是,我不建议在此处使用资产管道。请记住,您的资产摘要 URL 可能会在您预编译资产时发生变化。由于您从 API 提供此值,这意味着您正在使用 URL 进行响应,一旦您重新编译资产,它可能会呈现 404。
相反,您应该考虑将图像作为 public/
文件夹中的静态资产提供。这样,您的 API 的任何消费者都可以在您重新部署或重新生成您的资产后可靠地访问这些文件。
我有这个代码:
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
这个 return 我这个回复:
{ status: "ok", message: "Success!", image_url: 'images/image.png' }
我希望是这样的:
{ status: "ok", message: "Success!", image_url: 'assets/image-37bf76be1.png' }
问题是什么?
如果你想从控制器渲染图像,我相信你需要使用 view_context.image_url
。
正如 born4new 所建议的,您需要使用 image_url
来正确引用资产管道中的图像。 但是,我不建议在此处使用资产管道。请记住,您的资产摘要 URL 可能会在您预编译资产时发生变化。由于您从 API 提供此值,这意味着您正在使用 URL 进行响应,一旦您重新编译资产,它可能会呈现 404。
相反,您应该考虑将图像作为 public/
文件夹中的静态资产提供。这样,您的 API 的任何消费者都可以在您重新部署或重新生成您的资产后可靠地访问这些文件。