面向nil:NilClass的Rails 5.2 ActiveStorage未定义方法`signed_id'

时间:2018-06-28 14:08:51

标签: ruby-on-rails rails-activestorage

我实现了从User模型中删除图像的代码。

Rails 5.2 Active Storage purging/deleting attachements

我认为它删除了图片,但现在我遇到了错误

undefined method `signed_id' for nil:NilClass

我的视图(images.html.erb):

<% if @user.images.attached? %>
  <% @user.images.each do |image| %>
    <%= image_tag(url_for(image))%>
     <%= link_to 'Remove', delete_image_attachment_user_url(image.signed_id),
            method: :delete,
            data: { confirm: 'Are you sure?' } %>
  <% end %>
<% end %>

控制器

def images
end

def delete_image_attachment
  @image = ActiveStorage::Blob.find_signed(params[:id])
  @image.purge
  redirect_to root_path
end

我尝试从视图中删除代码,所以它只有这样:

<% if @user.images.attached? %>
  <% @user.images.each do |image| %>
    <%= image_tag(url_for(image))%>
  <% end %>
<% end %>

但是即使删除了“ signed_id”的代码,我仍然会收到错误消息。另外,我不确定为什么它会在接收代码的行中显示:

<%= image_tag(url_for(image))%>

如果我在排队时使用 @user.images.attached?

我认为错误可能是没有附件的图像(尽管应该有一个附件),所以我添加了该支票。

0 个答案:

没有答案