2015-06-24 4 views
0

Я после этого учебника: http://wearestac.com/blog/dynamic-error-pages-in-railsРельсы Пользовательские страницы ошибок с Маршруты

Однако, в моем файле маршрутов, у меня есть два пользовательских маршрутов:

get '/blog',  to: 'blog_posts#index', as: :blog 
get '/:id',   to: 'blog_posts#show', as: :show_blog_post 

Когда я иду на страницу, которая Безразлично Нет, он не перенаправляется на страницы ошибок. Вместо этого он дает мне Completed 404 Not Found. Error during failsafe response: ActiveRecord::RecordNotFound.

Пользовательские маршруты каким-то образом не создают работу страниц с ошибкой. Когда я удаляю пользовательские маршруты, все работает нормально.

Как мне заставить страницы моей ошибки работать с этим? Я бы подумал, что все, что вернет 404, будет перенаправлено на ErrorsController, но этого не происходит.

ответ

1

Ваш

get '/:id', to: 'blog_posts#show', as: :show_blog_post

маршрут, кажется, Поднимая обработку пользовательских ошибок. Если пользователь переходит к

/404

blog_posts#show вызывается с параметром id = 404, и я предполагаю, что он пытается искать сообщение в блоге с идентификатором 404, что приводит к ActiveRecord::RecordNotFound исключения.

Что вы можете сделать, это разместить свои правила ошибки наверху, до /:id, так как маршруты совпадают в том порядке, в котором они перечислены, но я бы просто не рекомендовал использовать что-то вроде /:id, так как он может случайно выбрать вещи как то, с чем мы имеем дело. Объедините маршрут с чем-то описательным, например /posts/:id.

+1

Удивительный, спасибо @Adib. Это сработало. Просто нужно было перемещать маршруты ошибок вверх. – leejay100

Смежные вопросы