Rails 5 Active Storage:显示多个图像

时间:2019-07-17 07:08:33

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

我正在Rails 5上构建一个小型CMS,以管理我作为图画书插图画家的在线作品集。

我正在使用Active Storage上载和显示图像,但是尽管上载部分工作正常,但在显示图像时仍然有些麻烦。

在我的数据库中,有一个名为Works的表(显然代表我正在研究的书),每本书都有一个封面插图和各种插图。

在我的Work模型中,我定义了关系as the Active Storage documentation suggests

class Work < ApplicationRecord
   :has_many_attached :illustrations
end

在我的控制器中,我以这种方式使用with_attached_illustrations方法:

def show
    @project = Work.with_attached_illustrations.find(params[:id])
end

在我看来,我正在这样做:

<% if @project.illustrations.attached? %>
                <%= @project.illustrations.each do |illustration| %>
                        <%= image_tag(illustration, :class => "illustrations") %>
                <% end %>
            <% end %>

这是浏览器,这是输出:

<img class="illustrations" src="http://localhost:3000/rails/active_storage/blobs/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBDdz09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--6766bc0bb57edf83ed29796e499d453019f10f3d/%C2%A901.jpg">
[#<ActiveStorage::Attachment id: 6, name: "illustrations", record_type: "Work", record_id: 9, blob_id: 6, created_at: "2019-07-17 01:55:04">]

图像显示得很好,但是对于每个要加载的图像,我都用[#ActiveStorage::Attachment ...表示这一行。

我应该怎么做才能摆脱它?

2 个答案:

答案 0 :(得分:0)

您的代码中有这个

<%= @project.illustrations.each do |illustration| %>

摆脱前面的=号,它显示为:

<% @project.illustrations.each do |illustration| %>

答案 1 :(得分:0)

在循环中,第一行中有'='等号。删除它,您的循环将像这样。

<% @project.illustrations.each do |illustration| %>
    <%= image_tag(illustration, :class => "illustrations") %>
<% end %>