如何为Cloudinary Active Storage关联模型的图片添加alt文本?
解决方案
1. 修正cl_image_tag的语法错误
你遇到的报错源于Ruby方法参数的语法问题:关键字参数需要用逗号与前面的参数分隔。正确写法如下:
<% @project.photos.each do |photo| %> <%= cl_image_tag photo.key, alt: "alt text goes here" %> <% end %>
2. 在Seeds中存储Alt文本(推荐方案)
要实现附加图片时同步设置Alt文本,可利用Active Storage的metadata字段存储自定义信息,无需修改数据库表:
修改Seeds代码:
file = URI.open("URL_TO_PHOTO") project.photos.attach( io: file, filename: "PHOTO.png", content_type: "image/png", metadata: { alt: "对应图片的Alt文本描述" } )
视图中读取存储的Alt文本:
<% @project.photos.each do |photo| %> <%= cl_image_tag photo.key, alt: photo.metadata["alt"] || "项目图片" %> <% end %>
添加|| "项目图片"是为了确保未设置自定义Alt文本的图片也有默认的可访问性文本。
补充说明
Active Storage的metadata字段默认支持存储哈希格式的自定义数据,适合存储图片描述、Alt文本这类附加信息,是轻量且符合Rails设计的方案。
内容的提问来源于stack exchange,提问作者KPenzes
相关产品推荐
相关产品推荐

