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

时间:2021-03-27 02:56:51

标签: ruby-on-rails ruby rails-activestorage

我正在遵循 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_for。并循环浏览图像。和 image_tag url_for (而不是只使用其中之一)。并使用表示法。在所有这些情况下都没有运气。我真的很感激任何帮助。

还有我的模型

  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



2 个答案:

答案 0 :(得分:1)

解决方案是从

更改文件上传形式
<%= form.file_field :images, multipart: true, direct_upload: true %>

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

之前没有上传,有人建议改用“多部分”。外观上解决了上传问题,但是没有附加图片。

我想上传外观现在也有效,因为我在疯狂尝试多种东西时调整了一些东西。

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

答案 1 :(得分:0)

您已指定 has_many_attached,因此@comment.images 将包含一组图像,因此以下代码将显示您评论的第一张图像。

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

如果要显示所有图像,可以遍历@comment.images 数组并显示每个图像

相关问题