Ruby on rails Carrierwave Cloudinary集成Ruby on Rails

Ruby on rails Carrierwave Cloudinary集成Ruby on Rails,ruby-on-rails,ruby,carrierwave,profile,cloudinary,Ruby On Rails,Ruby,Carrierwave,Profile,Cloudinary,我试着上传一些个人资料图片,如下所示:用户可以选择要从电脑上传的个人资料图片,然后他可以按自己喜欢的方式裁剪,高宽比为1:1,就像我使用的Whatsapp一样,最后,裁剪的图片通过上传到云,并绑定到我的模型用户的列图像。我跟着做了整合 这是我到目前为止所做的。以下是与cloudinary绑定的上传程序: class AvatarUploader < CarrierWave::Uploader::Base include Cloudinary::CarrierWave includ

我试着上传一些个人资料图片,如下所示:用户可以选择要从电脑上传的个人资料图片,然后他可以按自己喜欢的方式裁剪,高宽比为1:1,就像我使用的Whatsapp一样,最后,裁剪的图片通过上传到云,并绑定到我的模型用户的列图像。我跟着做了整合

这是我到目前为止所做的。以下是与cloudinary绑定的上传程序:

class AvatarUploader < CarrierWave::Uploader::Base

  include Cloudinary::CarrierWave
  include CarrierWave::MiniMagick
  process crop: [100, 100]

  def public_id
    model.nombre
  end
end
文件_字段更改时,即检查图像时,会显示cropbox

最后,在用户和控制器中

...
    def change_photo
      user = current_user
      user.update_attributes(user_params)
      sign_in(user)
      redirect_to profile_url
    end
    private
      def user_params
        params.require(:user).permit(..., :image)
    end
一切都很好,没有修剪的东西。也就是说,我实现了用户可以选择一个图像并上传它,一切正常。但当我添加裁剪控件时,它崩溃了。当我拾取图像时,会出现裁剪曲面,我可以完美地选择它,但当我单击“提交”按钮裁剪时,甚至在到达控制器的操作之前就会触发以下错误:

Rack::QueryParser::ParameterTypeError at /change_photo
expected Hash (got Hash) for param `image'
以下是调用的参数:

#<Rack::QueryParser::Params:0x396f9f0 @limit=65536, @size=5, @params={"image"=>{:filename=>"140.jpg", :type=>"image/jpeg", :name=>"user[image]", :tempfile=>#<Tempfile:C:/Users/josem/AppData/Local/Temp/RackMultipart20171229-7548-15105ol.jpg>, :head=>"Content-Disposition: form-data; name=\"user[image]\"; filename=\"140.jpg\"\r\nContent-Type: image/jpeg\r\n"}}>

我猜两个同名的PARS可能是个问题,但我不知道如何改变它,使它工作,我不明白为什么哈希被哈希是一个问题

< P>。虽然我不太熟悉GaveWaveRealon,但你可能想考虑用不同的方式来完成。Cloudinary还提供了开箱即用的上传小部件,它还支持执行客户端裁剪。 下面是一个基本的RoR/CarrierWave/Cloudinary的-Upload-widget示例项目,您可以进行测试:

该项目目前不包括裁剪功能,但可以轻松添加,请参阅提供的文档页面。 您可以在小部件上设置的参数之一是裁剪纵横比,这对您很有帮助

另外,请注意,使用该小部件,裁剪将在客户端完成,这将有助于加快上传速度,而且您的服务器将不需要处理裁剪

Rack::QueryParser::ParameterTypeError at /change_photo
expected Hash (got Hash) for param `image'
#<Rack::QueryParser::Params:0x396f9f0 @limit=65536, @size=5, @params={"image"=>{:filename=>"140.jpg", :type=>"image/jpeg", :name=>"user[image]", :tempfile=>#<Tempfile:C:/Users/josem/AppData/Local/Temp/RackMultipart20171229-7548-15105ol.jpg>, :head=>"Content-Disposition: form-data; name=\"user[image]\"; filename=\"140.jpg\"\r\nContent-Type: image/jpeg\r\n"}}>