Cloudinary, как обновлять / редактировать изображения в массиве - PullRequest
0 голосов
/ 04 мая 2018

Я следовал инструкциям на cloudinary.com, чтобы загрузить несколько изображений (продуктов) в cloudinary. Он отлично работает, когда я добавляю новый продукт и загружаю новое изображение. Когда я пытаюсь отредактировать / обновить продукт, я хочу, чтобы он добавил новое изображение в массив изображений, но я получаю ошибку:

enter image description here

В моем development.log:

Запущен PATCH "/ admin / products / 3" для 127.0.0.1 в 2018-05-04 09:35:12 +0200 Обработка Admin :: ProductsController # обновить как параметры HTML: {"utf8" => "✓", "Authenticity_token" => "4UcQNq49uJDpGAFyOxO3w07dhJFpIHkLYn2IqjLar + kWvNCC12c2Hjctq13rDOE476fPpm479fbV25XOr82bIQ ==", $ ^ [[1m ^ [[36mUser Load (0,9ms) ^ ^ [[0m ^ [[1m ^ [[34mВЫБРАТЬ "пользователей". * ОТ "users" ГДЕ "users". "id" = $ 1 ORDER BY "users". "id" ASC LIMIT $ 2 ^ [[0 $ ^ [[1m ^ [[36mПродукт загрузки (0,6мс) ^ [[0m ^ [[1m ^ [[34mSELECT] "products". * FROM "products" WHERE "products". "active" = 1 $ И "products". "id" = $ ^ [[1 м ^ [[35 м (0,3 мс) ^ [[0 м ^ [[1 м ^ [[35 мBEGIN ^ [[0 м] ^ [[1m ^ [[35mSQL (0.5ms) ^ [[0m ^ [[1m ^ [[33mUPDATE "продукты" SET "изображения" " = $ 1, "updated_at" = $ 2 ГДЕ "продукты". "Id" = $ 3 ^ [[0m [["images", $ ^ [[1m ^ [[35m (2.9ms) ^ [[0m ^ [[1m ^ [[35mCOMMIT ^ [[0m Completed 500 Внутренняя ошибка сервера в 21 мс (ActiveRecord: 5,2 мс)

NoMethodError (неопределенный метод `reject 'для "Изображение / загрузки / v1525416518 / t50yzb4cjtdnlyae4zx2.jpg": String):

app / controllers / admin / products_controller.rb: 29: в `update '

Даже если я не загружаю новый файл изображения, я все равно получаю сообщение об ошибке. Я думаю, что сделал что-то не так при настройке Cloudinary ...


Вот мои настройки:

Сначала я добавил драгоценные камни в свой gemfile

gem 'carrierwave', github:'carrierwaveuploader/carrierwave'
gem 'cloudinary'

Затем я создал файл cloudinary.yml, в который я добавил свои cloud_name, api_key и api_secret.

В моем ProductsController я установил изображения как массив изображений: []:

def update
 @product = Product.find(params[:id])
 if @product.update_attributes(product_params)
   redirect_to admin_products_path
 else
   redirect_to admin_products_path
 end
end

private

 def product_params
  params.require(:product).permit(:name, :description, :price, :supply, :shipping_amount, :active, :product_number, images: [] )
 end
end

На мой взгляд, поле файла изображений выглядит так:

<%= f.file_field :images, type: :file, multiple: true %><br />

Редактировать: Еще одна вещь, которую я узнал, это то, что когда я осматриваю страницу, появляется испорченная ссылка:

http://res.cloudinary.com/dzidt5gxk/raw/upload/v1/%5B%22%5B%5C%22image/upload/v1525416518/t50yzb4cjtdnlyae4zx2.jpg_____

Какая ссылка должна быть: http://res.cloudinary.com/dzidt5gxk/image/upload/v1525416534/exhgstwb354t4l6rqvmh.jpg

В консоли rails также показано, что массив изображений испорчен:

<Product id: 3, name: "Ananas", images: "[\"[\\\"image/upload/v1525416518/t50yzb4cjtdnlyae4zx2...", product_number: "342342">]>

1 Ответ

0 голосов
/ 04 мая 2018

Согласно документации Carrierwave :

Кроме того, убедитесь, что ваш контроллер загрузки разрешает несколько файлов атрибут загрузки, указывающий на пустой массив в хэше . Например:

params.require(:user).permit(:email, :first_name, :last_name, {avatars: []})

Может быть, вам просто нужно изменить параметры вашего разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...