Rails 5.2 ActiveStorage неопределенный метод Signed_id для nil: NilClass - PullRequest
0 голосов
/ 28 июня 2018

Я реализовал код для удаления изображений из моей User модели.

Рельсы 5.2 Очистка / удаление вложений Active Storage

Я думаю, что изображение было удалено, но теперь я получаю сообщение об ошибке

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 %>

Но даже после того, как я удалю код для подписанного идентификатора, я все еще получаю ошибку Кроме того, я не уверен, почему он смотрит на строку, получающую код:

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

если я использую, когда у меня есть линия @user.images.attached?

Я подумал, что ошибка может заключаться в том, что не было прикрепленных изображений (хотя должно быть одно прикрепленное изображение), поэтому я добавил эту проверку.

...