有没有办法全局定义rails应用程序只提供json和xml以及其他任何请求的错误?
我认为它与ApplicationController中的before_filter和responds_to块一样,但就我的调查所得到的那样。
答案 0 :(得分:10)
只需使用respond_to
在控制器的类级别声明它。如果您在ApplicationController
class ApplicationController < ActionController::Base
respond_to :xml, :json
…
end
另请阅读ActionController::Responder
课程以了解更多选项。
答案 1 :(得分:3)
要对错误进行json响应,只需将以下代码添加到application_controller:
rescue_from Exception, :with => :render_error
rescue_from ActiveRecord::RecordNotFound, :with => :render_not_found
rescue_from ActionController::RoutingError, :with => :render_not_found
rescue_from ActionController::UnknownController, :with => :render_not_found
rescue_from ActionController::UnknownAction, :with => :render_not_found
private
def render_not_found(exception)
# logger.info(exception) # for logging
respond_to do |format|
render json: {:error => "404"}, status: 404
end
end
def render_error(exception)
# logger.info(exception) # for logging
respond_to do |format|
render json: {:error => "500"}, status: 500
end
end
public
def some_public_func
#do sthg
end