Rails: #<ActiveStorage::Attached::Many:casualID> 的未定义方法“signed_id”

Rails: undefined method `signed_id' for #<ActiveStorage::Attached::Many:casualID>

我在 Ruby 2.4.1-rc2 和 Rails 5.2.1 上,我正在使用活动存储。文件上传是完美的,但是当我尝试用 rails_blob_path(user.avatar, disposition: "attachment", only_path: true)Rails.application.routes.url_helpers.rails_blob_path(c.allegati, only_path: true) 调用文件下载 url 时,它给我这个错误:

NoMethodError at /profilepage
undefined method `signed_id' for #<ActiveStorage::Attached::Many:0x00007f85c90dd170>

每次重新加载时 0x00007f85c90dd170 都会改变。

我在这里和 Google 上搜索过,但没有人遇到这个问题,我的 ActiveStorage 配置是标准配置(S3 凭据除外)。

有什么想法吗?提前致谢。

编辑:更多代码

show.html.erb

  <% if @utente.sostitutore == "1" %>
  <h1 class="title is-3">Sostituzioni accettate</h1>
  <% b = Sostituzione.where(sostitutore: utente_corrente.id) %>
  <% if b.empty? %>
  <p>
  Nessuna sostituzione accettata
  </p>
  <br />
  <% else %>
        <% b.each do |c| %>
            <%= Rails.application.routes.url_helpers.rails_blob_path(c.allegati, only_path: true) %>

  <% end %>
  <% end %>
  <% end %>

型号

class Sostituzione < ApplicationRecord
   attr_accessor :termini
   has_many_attached :allegati
   has_many_attached :documentiudienza
end

Edit2:尽管已正确上传,但调试结果为空。

已解决

已解决!对于多个附件(意大利语为 allegati),有 @sostituzione.allegati.first 等。 我用这段代码解决了:

<% @sostituzione.allegati.each do |allegato| %>
<div class="level">
  <%= link_to 'Scarica documento allegato', rails_blob_path(allegato, only_path: true), class: 'button is-primary is-big' %>
</div>
<% end %>