Какой предпочтительный способ выдать ответ 404 от действия контроллера rails?
Как вы выдаете 404 ответ от действия контроллера rails?
Ответ 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)
.
Однако это будет работать только для перенаправления, а не для загрузки страницы вверх.