Я следовал инструкциям на cloudinary.com, чтобы загрузить несколько изображений (продуктов) в cloudinary. Он отлично работает, когда я добавляю новый продукт и загружаю новое изображение. Когда я пытаюсь отредактировать / обновить продукт, я хочу, чтобы он добавил новое изображение в массив изображений, но я получаю ошибку:
В моем 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">]>