2

它看起来ActionController::StatusCodes已经从 Rails 3 中删除了。

我使用了 HTTP 状态代码的同义词,例如

200 => :ok
404 => :not_found
500 => :internal_server_error

有关更多代码,请参见此处:

http://apidock.com/rails/ActionController/Base/render#254-List-of-status-codes-and-their-symbols

我在哪里可以在 Rails 3 中找到这些?

4

2 回答 2

3

Ruby on Rails 使用Rack。状态码在 Rack::Utils 中定义:

HTTP_STATUS_CODES = {
  100  => 'Continue',
  101  => 'Switching Protocols',
  102  => 'Processing',
  200  => 'OK',
  201  => 'Created',
  ...
}

然后这些用于创建符号(即:switching_protocols):

SYMBOL_TO_STATUS_CODE = Hash[*HTTP_STATUS_CODES.map { |code, message|
  [message.downcase.gsub(/\s|-/, '_').to_sym, code]
}.flatten]

整个代码可在此处浏览

于 2011-04-04T18:31:51.680 回答
2

似乎错误代码位于action_dispatch/middleware/show_exceptions.rb符号映射到实际异常的位置:

  'ActionController::RoutingError'             => :not_found,
  'AbstractController::ActionNotFound'         => :not_found,
  'ActiveRecord::RecordNotFound'               => :not_found,
  'ActiveRecord::StaleObjectError'             => :conflict,
  'ActiveRecord::RecordInvalid'                => :unprocessable_entity,
  'ActiveRecord::RecordNotSaved'               => :unprocessable_entity,
  'ActionController::MethodNotAllowed'         => :method_not_allowed,
  'ActionController::NotImplemented'           => :not_implemented,
  'ActionController::InvalidAuthenticityToken' => :unprocessable_entity

然而 100 - 400 范围的映射从 Rails 中消失了,可能是因为它们已经存在于 Rack 中

于 2011-04-04T18:12:50.660 回答