Activestorage映像已保存在blob中,但未显示在视图中



我遵循rails ActiveStorage指南。我已经成功地将图像保存到本地数据库中的blob表中(附件表为空(。但我似乎无法在视图中显示它:

<%= url_for(@comment.images) if @comment.images %>

不起作用,也不起作用:

<% @comments.each do |c| %>
<%= c.body %>
<%= url_for(c.images) if c.images %>
<% end %>

显示评论作品的其他值,因此这是特定于图像的。我还尝试过将.url添加到";图像"我尝试了image_tag而不是url_fo。并在图像中循环。和image_tag url_fo(而不是仅使用其中一个(。以及使用表示法。在所有这些情况下运气都不好。我真的很感激任何帮助。

我的型号

has_many_attached :images

application.js

//= require activestorage

import Rails from "@rails/ujs"
import Turbolinks from "turbolinks"
import * as ActiveStorage from "@rails/activestorage"
import "channels"

Rails.start()
Turbolinks.start()
ActiveStorage.start()

控制器


private
def comment_params
params.require(:comment).permit(:body, images: [])
end

解决方案是从更改文件上传表单

<%= form.file_field :images, multipart: true, direct_upload: true %>

<%= form.file_field :images, multiple: true, direct_upload: true %>

它以前没有上传,有人建议切换到";多部分"它在外观上解决了上传问题,但没有附加图像。

我想上传的外观现在也起作用了,因为我在疯狂地尝试多种东西时调整了一些东西。

现在附件表中正在填充图像。之前只填充blob表。

您已经指定了has_many_attached,因此@comment.images将包含一组图像,因此下面的代码将显示注释的第一个图像。

<%= image_tag(@comment.images.first) if @comment.images.attached? %>

如果你想显示所有图像,你可以通过@comment.images数组迭代并显示每个图像

最新更新