Rails 模型中的 webpacker
Rails webpacker in model
有点奇怪的情况,但让我解释一下。我有一个需要输出多辆汽车的观点。汽车照片存储在 Amazon S3 上。有些车有照片,有些则没有。那些不需要的,需要他们的图像来显示本地存储的占位符图形。汽车模型有一个布尔字段来表示是否有汽车的照片。
部分汽车部分如下:
<div class="car__photo-inner">
<img src="<%= car.photo_or_placeholder_url({size: :thumb, aspect: :square}) %>" />
</div>
我的Car模型中的方法是这样的:
def photo_or_placeholder_url(options = {})
if photo
photo_url(options)
else
asset_pack_path File.join(["media", "images", "placeholder.jpg"])
end
end
photo_url
只需使用选项从 Amazon S3 中获取正确的 URL 即可完美运行。
我苦苦挣扎的地方是如何显示占位符图像。占位符存储在 /app/javascript/images.
有什么建议吗?
非常感谢,
尼尔
Any suggestions?
是的。不要在模型中这样做。 Rails 中的模型已经疯狂地承担了过多的责任。这实际上纯粹是一个视图问题。如果可能的话,模型真的应该只关注业务逻辑而不是表示。
那去哪儿呢?
辅助方法或 decorator:
module CarsHelper
def car_photo(car, **options)
url = if car.photo
car.photo_url(options)
else
"placeholder.jpg"
end
image_tag(url)
end
end
<div class="car__photo-inner">
<%= car_photo(car) %>
</div>
如果占位符图像是开发人员关心的问题,只需将其放在 app/assets/images
中并使用约定而不是反对它们。
有点奇怪的情况,但让我解释一下。我有一个需要输出多辆汽车的观点。汽车照片存储在 Amazon S3 上。有些车有照片,有些则没有。那些不需要的,需要他们的图像来显示本地存储的占位符图形。汽车模型有一个布尔字段来表示是否有汽车的照片。
部分汽车部分如下:
<div class="car__photo-inner">
<img src="<%= car.photo_or_placeholder_url({size: :thumb, aspect: :square}) %>" />
</div>
我的Car模型中的方法是这样的:
def photo_or_placeholder_url(options = {})
if photo
photo_url(options)
else
asset_pack_path File.join(["media", "images", "placeholder.jpg"])
end
end
photo_url
只需使用选项从 Amazon S3 中获取正确的 URL 即可完美运行。
我苦苦挣扎的地方是如何显示占位符图像。占位符存储在 /app/javascript/images.
有什么建议吗?
非常感谢, 尼尔
Any suggestions?
是的。不要在模型中这样做。 Rails 中的模型已经疯狂地承担了过多的责任。这实际上纯粹是一个视图问题。如果可能的话,模型真的应该只关注业务逻辑而不是表示。
那去哪儿呢?
辅助方法或 decorator:
module CarsHelper
def car_photo(car, **options)
url = if car.photo
car.photo_url(options)
else
"placeholder.jpg"
end
image_tag(url)
end
end
<div class="car__photo-inner">
<%= car_photo(car) %>
</div>
如果占位符图像是开发人员关心的问题,只需将其放在 app/assets/images
中并使用约定而不是反对它们。