在模型中使用ActionView :: Helpers :: AssetUrlHelper和asset_path

fir*_*dev 5 ruby-on-rails asset-pipeline ruby-on-rails-4

我想创建一个MissingImage这样的类:

class MissingImage

  include ActionView::Helpers::AssetUrlHelper

  def src format
    return asset_path('layout/missing_image.png')
  end
end
Run Code Online (Sandbox Code Playgroud)

要在模型中使用这样的:

def main_image
  images.find(&:ismain) || images.first || MissingImage.new
end
Run Code Online (Sandbox Code Playgroud)

问题是 - asset_path当像这样使用时,只返回字符串而不与资产管道建立任何连接.

建议?

UPDATE

在搞砸之后我MissingImage有点重构,但它仍然没有在生产中生成签名的资产路径:

class MissingImage
  def src format
    return ActionController::Base.helpers.asset_path('layout/missing_image.png')
  end
end
Run Code Online (Sandbox Code Playgroud)

返回的路径是 /assets/layout/missing_image.png

spa*_*kus 0

就我的目的而言,“/assets/icons/myimage.png”已经足够好了,但听起来您想要完全限定的路径。我认为如果你尝试获得一个绝对网址,你可能会有更好的运气。

您可以在 config.action_controller.asset_host 上设置选项,然后使用:

#{asset_path("布局/missing_image.png")}

查看此问题的已接受答案中的评论 - Rails 3.1 图像的绝对 URL