使用ajax对表单进行自定义操作的响应

时间:2015-09-03 18:54:41

标签: ruby-on-rails ajax forms carrierwave

我想使用自定义操作上传用户头像(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 (空白页),而是保留在同一视图中

1 个答案:

答案 0 :(得分:1)

这将通过添加remotipart gem

来解决

https://github.com/JangoSteve/remotipart