对于不同的请求类型,Rails处理404的方式不同

时间:2014-10-23 09:11:22

标签: ruby-on-rails-3 routing

我在同一个应用程序(但不同的控制器和名称空间)中有一个API作为标准视图和控制器来处理相同的资源。

目前,当我收到404时,无论请求是作为HTML还是json,我都会收到HTML 404响应。

应用程序控制器部分按如下方式处理404:

unless Rails.application.config.consider_all_requests_local
      rescue_from ActiveRecord::RecordNotFound, with: :render_denied_404
      rescue_from ActionController::RoutingError, with: :render_404
      rescue_from ::AbstractController::ActionNotFound, with: :render_404
      rescue_from ActionController::UnknownController, with: :render_404
      rescue_from ActionView::MissingTemplate, with: :render_404
end

def render_404(e = Exception.new)
      Rails.logger.info "Rendering 404: #{e.to_s}"
      flash[:error] = "Error 404 " + e.to_s
      redirect_to "/404"
end

如何更改此设置以根据请求格式类型不同地处理404错误?

1 个答案:

答案 0 :(得分:0)

您需要使用respond_torespond_with块来做出不同的响应,具体取决于您的回复方式。

API documentation

Blog Article

Rails Cast