ActionView :: Template :: Error(nil:NilClass的未定义方法“文件名”):

时间:2019-05-07 03:51:54

标签: ruby-on-rails rails-activestorage

我正在使用Rails Active存储将附件添加到我的作业模型中,并不断抛出上述错误

我以前使用过载波宝石,但决定改用Active Storage。我需要视图来显示文件和名称,但错误始终显示。 当我注释掉该行时,即使文件是word或pdf或excel文档,工作分配视图仍可使用,但不能作为图像使用。

  <% if @assignment.attachments.attached? %>
   <p>
    <strong>Attachments</strong><br>
    <% @assignment.attachments.each do |attachment| %>
    <%= image_tag url_for(@assignment.attachment) %>
    <%= link_to rails_blob_path(@assignment.attachment.filename, 
    disposition: "attachment") %>

  <% end %>
   </p>

作业模型

    class Assignment < ApplicationRecord
     has_many_attached :attachments
    end

在分配控制器中,我允许以下参数中的附件

       attachments: []

1 个答案:

答案 0 :(得分:0)

.each循环中,每个附件条目将被称为attachment,而不是@assignment.attachment。在发生错误的情况下,@assignment.attachment为nil。

将您的代码更新为以下两行:

<%= image_tag url_for(attachment) %> <%= link_to rails_blob_path(attachment.filename, disposition: "attachment") %>