неопределенный метод `signed_id' для nil:NilClass

Некоторое время назад я пытался удалить вложения активного хранилища, поэтому я следую ответу на этот вопрос: Очистка/удаление вложений в Rails 5.2 Active Storage

Но после этого:

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

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

введите здесь описание изображения

Поэтому немного меняю код:

routes.rb

match 'vehicles/:id/:image_id' => 'vehicles#delete_image_attachment', :via => :delete, :as => :delete_image_attachment

vehicles_controller.rb

def delete_image_attachment
  @image = ActiveStorage::Attachment.find(params[:image_id])
  @image.purge
  redirect_back(fallback_location: vehicles_path)
end

в представлении я хочу удалить какое-то изображение

<% @vehicle.images.each do |img| %>
  <%= image_tag img %>
  <%= link_to delete_image_attachment_url(@vehicle, img), method: :delete, data: { confirm: 'Are you sure?' } %>
<% end %>

Это работает для уже существующих транспортных средств, но когда я создаю новое транспортное средство, одна и та же ошибка появляется в каждом представлении с изображением этого транспортного средства.

Кто-нибудь знает, что это за ошибка и как ее исправить? Кроме того, есть ли способ удалить все данные из активного хранилища, например, сбросить таблицу? Благодарю вас!


person Proz1g    schedule 04.07.2018    source источник
comment
Может быть, эта запись не имеет изображения? Попробуйте добавить if img.attached? или что-то в этом роде. Проверьте документы ActiveStorage, чтобы узнать, как проверить, существует ли вложение.   -  person iGian    schedule 04.07.2018
comment
Не могли бы вы поделиться кодом, где использовалось signed_id?   -  person Anand    schedule 04.07.2018
comment
Привет, @iGian, чтобы упростить объяснение, я удалил некоторый код, но в своем исходном коде я проверяю, есть ли img или нет, с помощью этого вспомогательного метода. Но спасибо за ответ ;)   -  person Proz1g    schedule 04.07.2018
comment
@Gabbar, этот код использовался в контроллере транспортного средства, но я поменял @image = ActiveStorage::Blob.find_signed(params[:id]) на @image = ActiveStorage::Attachment.find(params[:image_id]), как я сказал в вопросе. Я думаю, что первый код уничтожит что-то в таблице activestorage, я не знаю... Может быть, есть какой-то способ сбросить таблицы, но я не знаю, как это сделать.   -  person Proz1g    schedule 04.07.2018
comment
Прикрепляется ли изображение первого автомобиля при создании автомобиля? ||| Для сброса я никогда не пробовал!, но, возможно, из консоли удалив все строки ActiveStorage::Attachment и ActiveStorage::Blob   -  person iGian    schedule 04.07.2018
comment
В итоге я сбрасываю базу данных, я думаю, что это какая-то ошибка, я не знаю. Спасибо вам за помощь. Если кто-то узнает решение, пожалуйста, ответьте на него ;)   -  person Proz1g    schedule 04.07.2018