使用 ajax 自定义操作的表单响应
Response for Form with custom action using ajax
我想使用这样的自定义操作上传用户头像(载波):
= 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=",
"user"=> {"avatar_picture"=>
#>}, "commit"=>"Update", "id"=>"30", "action"=>"update_user_avatar",
"controller"=>"users"}
请求
.... "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(空白页), 而不是停留在同一个视图中。
这将通过添加 remotipart
gem
来解决
我想使用这样的自定义操作上传用户头像(载波):
= 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=", "user"=> {"avatar_picture"=> #>}, "commit"=>"Update", "id"=>"30", "action"=>"update_user_avatar", "controller"=>"users"}
请求
.... "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(空白页), 而不是停留在同一个视图中。
这将通过添加 remotipart
gem