Ruby on Rails 3 - 404 маршрутизация - PullRequest
1 голос
/ 23 апреля 2011

Я пытаюсь настроить мои 404 в рельсах ...

Я следовал этим инструкциям

и, кажется, работает, если сделать что-то вроде:

www.myapp.com / no_controller /

но если я сделаю:

www.myapp.com / existing_controller / NO_ACTION

Я получаю активную запись, запись не найдена ... и т.д. ...

Я бы хотел, чтобы этот маршрут также направлялся на страницу 404 ... это возможно?

1 Ответ

9 голосов
/ 23 апреля 2011

Когда вы переходите к

www.myapp.com/existing_controller/no_action

, вы фактически называете show действие existing_controller с no_action как id.В режиме разработки вы получаете ошибку RecordNotFound.В производстве вы получите 404 страницы.

Если вы хотите настроить это поведение в режиме разработки и получить root права на страницу 404 (кстати, я не советую! Потому что это было сделано намеренно, чтобы помочь вам отладить), вы можете rescue_from эту ошибку:

class ApplicationController < ActionController::Base

  rescue_from ActiveRecord::RecordNotFound do
    render_404
  end 

  def render_404
    respond_to do |type|
      type.html { render :template => "shared/error_404/message", :layout => "application", :status => "404 Not Found" }
      type.all  { render :nothing  => true, :status => "404 Not Found" }
    end
  end
end

Вне области действия. Один метод в этом примере может быть полезен при разработке 404 страниц: в отличие от стандартного public/404.html вы можете использовать макет приложения с этим подходом.

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