Подтвердить что ты не робот

Как вы выдаете 404 ответ от действия контроллера rails?

Какой предпочтительный способ выдать ответ 404 от действия контроллера rails?

4b9b3361

Ответ 1

Это кажется хорошим...

# Rails 2 and below
render :file => "#{RAILS_ROOT}/public/404.html",  :status => 404

# Rails 3 and up
render :file => "#{Rails.root}/public/404.html",  :status => 404

Ответ 2

Вы также можете

raise ActiveRecord::RecordNotFound

исключение.

Ответ 3

Следующий способ был для меня лучшим:

raise ActionController::RoutingError.new('Not Found')

или просто

raise ActionController::RoutingError, 'Not Found'

Или есть некоторые другие решения: Как перенаправить на 404 в Rails?

Ответ 4

Ссылка:

render :file => '/path/to/some/filenotfound.rhtml', 
                status => 404, :layout => true

Ответ 5

В ApplicationController определите метод, например:

def render_404
  render :file => "#{RAILS_ROOT}/public/404.html",  :status => 404
end

Ответ 6

Если вы хотите выдать код статуса при перенаправлении (например, 302), вы можете поместить его в routes.rb:
get "/somewhere", to: redirect("/somewhere_else", status: 302).
Однако это будет работать только для перенаправления, а не для загрузки страницы вверх.