我試圖用裁剪後的圖像更新現有的用戶頭像。此外,控制器獲取所有必需的參數(avatar_crop_x,avatar_crop_y,avatar_crop_w,avatar_crop_h)。我已經允許他們使用devise_parameter_sanitizer.permit(:account_update)
方法。Devise + Carrierwave裁剪圖像
Started PATCH "/users" for 127.0.0.1 at 2017-07-23 23:50:29 +0300
Processing by Devise::RegistrationsController#update as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"n8ZQYS5iZXJs6V5eS4PfJKDeUhugasvXXIvIP+ZZIyLV4tukuqqjSvUA
+DnZFZSF468eam1vSF8hD5STYmeA8Q==", "user"=>{"email"=>"[email protected]", "username"=>"admin", "first_name"=>"",
"last_name"=>"", "position"=>"", "city"=>"", "bio"=>"",
"avatar"=>#<ActionDispatch::Http::UploadedFile:0x007f82cb8f3860
# @tempfile=#<Tempfile:/var/folders/2h/4k0zwm8s4j1dfq5_8zf7ttmr0000gn/T/RackMultipart20170723-11835-fia4di.jpg>,
# @original_filename="gloomy-mountain-lake-hd-wallpaper.jpg", @content_type="image/jpeg",
# @headers="Content-Disposition: form-data; name=\"user[avatar]\"; filename=\"gloomy-mountain-lake-hd-wallpaper
# .jpg\"\r\nContent-Type: image/jpeg\r\n">, "avatar_crop_x"=>"1266.6666666666665", "avatar_crop_y"=>"319
# .9999999999999", "avatar_crop_w"=>"1280", "avatar_crop_h"=>"1280", "password"=>"[FILTERED]",
# "password_confirmation"=>"[FILTERED]", "current_password"=>"[FILTERED]"}, "commit"=>"Update"}
另外我在用戶模型中有四個字段。
class User
...
attr_accessor :avatar_crop_x, :avatar_crop_y, :avatar_crop_w, :avatar_crop_h
...
但是在我的上傳器中所有的model.avatar_crop_*
字段都是零。
class AvatarUploader < BaseUploader
process :crop
version :thumb do
process resize_to_fill: [50, 50]
end
def crop
if model.avatar_crop_x.present?
manipulate! do |img|
w = model.avatar_crop_w.to_i
h = model.avatar_crop_h.to_i
# Set x-y coordinates of cropped image.
x = model.avatar_crop_x.to_i
y = model.avatar_crop_y.to_i
img.crop "#{w}x#{h}+#{x}+#{y}"
end
end
end
end
有沒有人有同樣的問題?請幫幫我。謝謝
您能否添加更多有關裁剪方法的信息,以及如何向上傳者發送':avatar_crop_x,:avatar_crop_y,:avatar_crop_w,:avatar_crop_h'? – Jeremie
@Jeremie我使用cropper.js https://github.com/fengyuanchen/cropper而不是JCrop。當我將表單參數發送給Devise :: RegistarationController#update時,我的表單中有四個隱藏字段。你可以看到上面的日誌。我不明白爲什麼模型在頭像上傳器中有沒有值的字段。這個'model.avatar_crop_w'返回nil。 –