使用 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

来解决

https://github.com/JangoSteve/remotipart