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



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

我曾经使用过载波宝石,但决定使用主动存储。我需要视图以显示文件和名称,但错误仍显示。当我评论该行时,分配视图正在工作,但即使文件是单词或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: []

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

更新您的代码以具有以下两行:

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

最新更新