Генерировать ошибку 404

Я создал действие под названием error404 в контроллере PagesController. Я хотел бы отобразить это действие, если произошла следующая ситуация:

  1. Контроллер в URL не существует
  2. Действие в URL не существует

Как я могу это сделать?

Я попытался следовать инструкциям на этой странице, Показать 404 вместо 500 в Rails , но, похоже, это работает только в первой ситуации.

Спасибо за помощь. :)


person Victor Lam    schedule 26.04.2010    source источник


Ответы (1)


Я думаю, что если действие в вашем контроллере не существует, и ваш контроллер связан с созданием каркаса, то по умолчанию он переходит к методу «показать» контроллера.

Например: - http://www.domain.com/controller_name/invalid_action_name

Здесь ваше «controller_name» является действительным контроллером. &

«invalid_action_name» — недопустимое действие.

Затем по умолчанию он переходит к методу «show» для «controller_name» и считается «invalid_action_name» параметром [:id].

поэтому в методе show вы можете исправить ошибку и показать действительную страницу ошибки, например «Запись не найдена» или «ошибка 404».

EDITED вам нужно добавить маршрут для нового имени метода в вашем /config/routes.rb следующим образом

map.resources :controller_name, :collection=>{:show=>:get}

не забывайте перезапускать сервер всякий раз, когда вы меняете этот файл.

person Salil    schedule 26.04.2010
comment
Спасибо. Я новичок в RoR и не совсем понимаю. Я создал новое действие под названием show. Когда я нажал на invalid_action_name, он не попал в экшн-шоу. Это просто дайте мне.... Неизвестное действие Нет ответа на invalid_action_name. Действия: xxxx, xxxx, xxx Я что-то не так сделал? - person Victor Lam; 26.04.2010
comment
вам нужно добавить маршрут в ваш route.rb. пожалуйста, посмотрите мой отредактированный ответ. - person Salil; 26.04.2010
comment
ой. это не работает для меня. но все равно спасибо за помощь. :) - person Victor Lam; 26.04.2010