Получение доступа к: not_found,: internal_server_error и т. Д. В Rails 3 - PullRequest
2 голосов
/ 04 апреля 2011

Похоже, 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?

Ответы [ 2 ]

3 голосов
/ 04 апреля 2011

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]

Весь код доступен для просмотра здесь .

2 голосов
/ 04 апреля 2011

Кажется, что коды ошибок находятся в 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, возможно потому, что они уже присутствует в стойке .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...