Частично работающая простая загрузка изображений с помощью Active Storage - PullRequest
0 голосов
/ 15 апреля 2020

Любая помощь или руководство будут наиболее ценными.

Однако я следовал Руководству по Rails и могу загрузить изображение в модель. Однако это выдает ошибку.

Я скопировал то, что предлагает ошибка, и это вызывает другую ошибку и не загружает изображение.

Большое, большое спасибо заранее!

Это работает, но выдает ошибку после отправки формы. Если я нанесу ответный удар, а затем зайду по указанному c prod id product #, покажите, что изображение загружено.

Ошибка

NameError в ProductsController # создать неопределенную локальную переменную или метод `product 'для # Вы имели в виду? @ product

Products.rb

    def create
        @list = List.find(params[:list_id])
        @product = @list.products.create(product_params)
        product.hero.attach(params[:hero])
        redirect_to list_path(@list)
    end

Однако это не работает, выглядит синтаксически корректно, поскольку модель "@product" присоединяется к: hero.

Products.rb

    def create
        @list = List.find(params[:list_id])
        @product = @list.products.create(product_params)
        @product.hero.attach(params[:hero])
        redirect_to list_path(@list)
    end
  • создает продукт
  • обновляет экран обратно к списку продуктов, чтобы он выглядел правильно.
  • Это приводит к двум ошибкам:

Первая ошибка в продуктах # show

ArgumentError в продуктах # show Отображение /Users/user/rubyonrails/shopping/app/views/products/show.html .erb, где поднята строка # 2:

Невозможно разрешить изображение в URL: to_model делегирован во вложении, но вложение равно nil

Второй вывод терминала представляет загрузку, похоже, сработает что-то, что называется Active Storage Purge, и удалит его?

  ActiveStorage::Blob Load (0.3ms)  SELECT "active_storage_blobs".* FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = $1 LIMIT $2  [["id", 7], ["LIMIT", 1]]
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef] Performing ActiveStorage::PurgeJob (Job ID: e9b35a62-ff6c-4a38-8946-3aa9c19668ef) from Async(active_storage_purge) enqueued at 2020-04-15T11:31:41Z with arguments: #<GlobalID:0x00007f92b1da3d60 @uri=#<URI::GID gid://shopping/ActiveStorage::Blob/7>>
[ActiveJob] [ActiveStorage::AnalyzeJob] [b724849f-6993-4130-bef1-a0f8837a3171]    (6.4ms)  COMMIT
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]    (0.8ms)  BEGIN
[ActiveJob] [ActiveStorage::AnalyzeJob] [b724849f-6993-4130-bef1-a0f8837a3171] Performed ActiveStorage::AnalyzeJob (Job ID: b724849f-6993-4130-bef1-a0f8837a3171) from Async(active_storage_analysis) in 15.88ms
Started GET "/lists/9" for ::1 at 2020-04-15 12:31:41 +0100
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]   ActiveStorage::Attachment Exists? (0.5ms)  SELECT 1 AS one FROM "active_storage_attachments" WHERE "active_storage_attachments"."blob_id" = $1 LIMIT $2  [["blob_id", 7], ["LIMIT", 1]]
Processing by ListsController#show as HTML
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]   ActiveStorage::Attachment Load (1.1ms)  SELECT "active_storage_attachments".* FROM "active_storage_attachments" WHERE "active_storage_attachments"."record_id" = $1 AND "active_storage_attachments"."record_type" = $2 AND "active_storage_attachments"."name" = $3 LIMIT $4  [["record_id", 7], ["record_type", "ActiveStorage::Blob"], ["name", "preview_image"], ["LIMIT", 1]]
  Parameters: {"id"=>"9"}
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]   ActiveStorage::Blob Destroy (1.0ms)  DELETE FROM "active_storage_blobs" WHERE "active_storage_blobs"."id" = $1  [["id", 7]]
  List Load (0.9ms)  SELECT "lists".* FROM "lists" WHERE "lists"."id" = $1 LIMIT $2  [["id", 9], ["LIMIT", 1]]
  ↳ app/controllers/lists_controller.rb:7:in `show'
  Product Load (0.2ms)  SELECT "products".* FROM "products" WHERE "products"."id" = $1 LIMIT $2  [["id", 9], ["LIMIT", 1]]
  ↳ app/controllers/lists_controller.rb:8:in `show'
  Rendering lists/show.html.erb within layouts/application
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT $2  [["id", 1], ["LIMIT", 1]]
  ↳ app/views/lists/show.html.erb:2
  Product Exists? (0.2ms)  SELECT 1 AS one FROM "products" WHERE "products"."list_id" = $1 LIMIT $2  [["list_id", 9], ["LIMIT", 1]]
  ↳ app/views/lists/show.html.erb:5
  Product Load (0.2ms)  SELECT "products".* FROM "products" WHERE "products"."list_id" = $1  [["list_id", 9]]
  ↳ app/views/lists/show.html.erb:6
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]    (6.4ms)  COMMIT
   (0.8ms)  SELECT COUNT(*) FROM "products" WHERE "products"."list_id" = $1  [["list_id", 9]]
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]   Disk Storage (0.2ms) Deleted file from key: 31cfuow9pj6vjqhq8i479fdxf1lc
  ↳ app/controllers/application_controller.rb:5:in `product_list_size?'
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef]   Disk Storage (0.1ms) Deleted files by key prefix: variants/31cfuow9pj6vjqhq8i479fdxf1lc/
  Rendered lists/show.html.erb within layouts/application (Duration: 9.5ms | Allocations: 7278)
[ActiveJob] [ActiveStorage::PurgeJob] [e9b35a62-ff6c-4a38-8946-3aa9c19668ef] Performed ActiveStorage::PurgeJob (Job ID: e9b35a62-ff6c-4a38-8946-3aa9c19668ef) from Async(active_storage_purge) in 22.5ms
[Webpacker] Everything's up-to-date. Nothing to do

Элемент списка

1 Ответ

0 голосов
/ 15 апреля 2020

Яйцо на моем лице.

Проблема с восклицательным знаком, кажется, является проблемой.

от

@product = @list.products.create(product_params)

до этого и все работает

@product = @list.products.create!(product_params)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...