I have this code:
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
This return me this response:
{ status: "ok", message: "Success!", image_url: 'images/image.png' }
And I expect something like:
{ status: "ok", message: "Success!", image_url: 'assets/image-37bf76be1.png' }
What is the problem?
答案 0 :(得分:2)
如果您想从控制器渲染图像,我相信您需要使用view_context.image_url
。
答案 1 :(得分:1)
正如born4new建议的那样,您需要使用image_url
来正确引用资产管道中的图像。 但是,我不建议在此处使用资产管道。请注意,在预编译资产时,资产摘要网址可能会发生变化。由于您从API提供此值,这意味着您在重新编译资产时会使用可能会呈现404的网址进行回复。
相反,您应该考虑将图像作为public/
文件夹中的静态资源提供。这样,在重新部署或重新生成资产后,API的任何使用者都可以可靠地访问这些文件。