我想使用自定义操作上传用户头像(carrierwave),如下所示:
= form_for user, url: update_user_avatar_path(id: user.id), :html => {:class => "up-cl-ava-form", data: {type: :json}, novalidate: true, method: :put}, remote: true do |f|
= f.file_field :avatar_picture
= f.submit "Update", remote: true
在 UsersController
中def update_user_avatar
@user = User.find(params[:id]) || current_user
respond_to do |format|
if @user.update_attributes!(avatar_picture: params[:user][:avatar_picture])
format.json { render json: {}, status: :ok}
else
format.json { render json: {}, status: :unprocessable_entity}
end
end
end
#update_user_avatar 中的参数
{“utf8”=>“✓”,“_ method”=>“put”, “authenticity_token”=> “中BPGeN5mpRCYwIco1YSsBx6IT7MfIBOdSlwS9Y5WJZeU =”, “用户”=> { “avatar_picture”=> #>},“commit”=>“更新”,“id”=>“30”,“action”=>“update_user_avatar”, “控制器”=> “中的用户”}
请求
....“CONTENT_TYPE”=>“multipart / form-data; boundary = ---- WebKitFormBoundaryvz51HFYrromiuTS7“....
在我的JS中
$(document).ready(function(){
$(".up-cl-ava-form").on("ajax:success", function(){
alert("success")
});
});
此处的问题是图片上传正确但网站重定向到 lvh.me:3000/update_user_avatar?id=30 (空白页),而是保留在同一视图中的