Cloudinary如何更新/编辑数组

时间:2018-05-04 08:18:08

标签: ruby-on-rails ruby carrierwave cloudinary

我按照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" = GT;" 4UcQNq49uJDpGAFyOxO3w07dhJFpIHkLYn2IqjLar + kWvNCC12c2Hjctq13rDOE476fPpm479fbV25XOr82bIQ ==",$   ^ [[1m ^ [[36mUser Load(0.9ms)^ [[0m ^ [[1m ^ [[34mSELECT" users"。* FROM   "用户"用户"。" id" = $ 1 ORDER BY"用户"。" id" ASC限制   $ 2 ^ [[0 $ ^ [[1m ^ [[36mProduct Load(0.6ms)^ [[0m ^ [[1m ^ [[34mSELECT]   "产品"。* FROM"产品"在哪里"产品"。"活跃" = $ 1 AND   "产品"" ID" = $ ^ [[1m ^ [[35m(0.3ms)^ [[0m ^ [[1m ^ [[35mBEGIN ^ [[0m]   ^ [[1m ^ [[35mSQL(0.5ms)^ [[0m ^ [[1m ^ [[33mUPDATE"产品" SET"图像"   = $ 1," updated_at" = $ 2 WHERE"产品"。" id" = $ 3 ^ [[0m [["图像",$ ^ [[1m ^ [[35m(2.9ms)^ [[0m ^ [[1m ^ [[35mCOMMIT ^ [[0m已完成500]   内部服务器错误21毫秒(ActiveRecord:5.2毫秒)

     

NoMethodError(未定义的方法`拒绝' for   "图像/上传/ v1525416518 / t50yzb4cjtdnlyae4zx2.jpg":字符串):

     

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 :(得分:0)

根据Carrierwave documentation

  

另外,请确保您的上传控制器允许多个文件   upload属性,指向散列中的空数组。例如:

     

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

也许您只需要更改许可证参数。