我想将image_tag srcset属性与活动存储变体一起使用
<%= image_tag(@assoc.photo,
srcset:[
[@assoc.photo.variant(resize: "600x600"), "1024w"],
[@assoc.photo.variant(resize: "800x800"), "1980w"]
],
sizes: "100vw") %>
第一行返回:没有将Symbol隐式转换为Integer。
怎么了?
答案 0 :(得分:0)
尝试将@assoc.photo.variant(resize: "600x600")
包装在url_for
中。
作为旁注,我发现了这种srcset风格,您可以在其中定义宽度,而不是面向分辨率的1x,1x方法将在调整窗口大小时导致大量服务器调用。在Rails文档中未发现有关此行为的任何信息。
答案 1 :(得分:0)
我做了一种调整照片大小的方法:
def photos_variants(photo, width, height)
variation = ActiveStorage::Variation.new(Uploads.resize_to_fill(width: width, height: height, blob: photo.blob))
ActiveStorage::Variant.new(photo.blob, variation)
end
然后我在srcset标记中调用此方法:
<%= image_tag(@assoc.photo,
srcset:[
[url_for(@assoc.photos_variants(@assoc.photo, 400, 300)), "512w"],
[url_for(@assoc.photos_variants(@assoc.photo, 600, 450)), "768w"],
[url_for(@assoc.photos_variants(@assoc.photo, 800, 600)), "1024w"],
[url_for(@assoc.photos_variants(@assoc.photo, 1200, 900)), "1980w"]
],
sizes: "100vw") %>