瀏覽代碼

Adds a reusable method to render API response on validation failure.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4455 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/1.1.0
Jean-Philippe Lang 13 年之前
父節點
當前提交
d0a3aab2e7
共有 2 個文件被更改,包括 15 次插入5 次删除
  1. 13
    1
      app/controllers/application_controller.rb
  2. 2
    4
      app/controllers/users_controller.rb

+ 13
- 1
app/controllers/application_controller.rb 查看文件

@@ -413,5 +413,17 @@ class ApplicationController < ActionController::Base
{ attribute => error }
end.to_json
end

# Renders API response on validation failure
def render_validation_errors(object)
options = { :status => :unprocessable_entity, :layout => false }
options.merge!(case params[:format]
when 'xml'; { :xml => object.errors }
when 'json'; { :json => {'errors' => object.errors} } # ActiveResource client compliance
else
raise "Unknown format #{params[:format]} in #render_validation_errors"
end
)
render options
end
end

+ 2
- 4
app/controllers/users_controller.rb 查看文件

@@ -122,8 +122,7 @@ class UsersController < ApplicationController

respond_to do |format|
format.html { render :action => 'new' }
format.json { render :json => {:errors => @user.errors}, :status => :unprocessable_entity, :layout => false }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity, :layout => false }
format.api { render_validation_errors(@user) }
end
end
end
@@ -180,8 +179,7 @@ class UsersController < ApplicationController

respond_to do |format|
format.html { render :action => :edit }
format.json { render :json => {:errors => @user.errors}, :status => :unprocessable_entity, :layout => false }
format.xml { render :xml => @user.errors, :status => :unprocessable_entity, :layout => false }
format.api { render_validation_errors(@user) }
end
end
rescue ::ActionController::RedirectBackError

Loading…
取消
儲存