我正在我的模型上创建一个方法,可以使用该方法将 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
出现错误,我不确定如何解决它?
您可以使用
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 和前端资产的信息。也许为此目的考虑助手或装饰器会更好