Я реализовал код для удаления изображений из моей 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?
Я подумал, что ошибка может заключаться в том, что не было прикрепленных изображений (хотя должно быть одно прикрепленное изображение), поэтому я добавил эту проверку.