asset_path 帮助程序在方法中出错

问题描述 投票:0回答:1

我正在我的模型上创建一个方法,可以使用该方法将 URL 返回到正确的徽标、照片或后备图像。我的代码是:

def image
    if photo1.attached?
        { url: photo1.url, alt: "Photo of #{full_name}" }
    elsif photos.any?
        photo = photos.first
        url = photo.url(:large_square)
        { url: url, alt: "Photo of #{full_name}" }
    else
        { url: url_for(asset_path "placeholder.svg"), alt: "Placeholder for #{full_name}" }
    end
end

但是

url_for
asset_path
出现错误,我不确定如何解决它?

ruby-on-rails model
1个回答
0
投票

您可以使用

Rails.application.routes.url_helpers
模块

h = Rails.application.routes.url_helpers
h.url_for(h.asset_path "placeholder.svg")

您甚至可以将此模块包含到某些课程中

class MyClass
  include Rails.application.routes.url_helpers

  def my_url
    asset_path("placeholder.svg")
  end
end

MyClass.new.my_url
将返回路径

但在模型中定义此类方法可能不是一个好主意,因为它们不应该了解有关 URL 和前端资产的信息。也许为此目的考虑助手或装饰器会更好

© www.soinside.com 2019 - 2024. All rights reserved.