Единственная причина, по которой вы получаете код 500, - это то, что ваше приложение выдает исключение. Это может быть связано с отсутствующим маршрутом, в котором у вас нет ничего определенного, которое соответствует этому, или из-за того, что ваш контроллер или просмотр разбился.
В производственной среде вы можете захотеть поймать все ошибки, сгенерированные вашим приложением, и при необходимости представить лучший экран ошибки или страницу «Не найдено», если это необходимо.
Например, перебор всеохватывающего исключения ловец может быть определен как:
class ApplicationController < ActionController::Base
if (Rails.env.production?)
rescue_from Object, :with => :uncaught_exception_rescue
end
protected
def uncaught_exception_rescue(exception)
render(:partial => 'errors/not_found', :status => :not_found)
end
end
Возвратившись ошибкой 404 типа легко, если вы можете сказать, когда вы хотите сделать это:
render(:partial => 'errors/not_found', :status => :not_found)
Убедитесь, что у вас есть какой-то маршрут по умолчанию, или вы будете получать эти ошибки все время. Обычно это делается путем добавления кетчупа всего маршрута в самом конце вашего routes.rb:
map.default '/*path', :controller => 'default', :action => 'show'
После этого вы можете делать все, что вы хотите с этим запросом.
Спасибо, очень полезно! – Victor