Как правильно обработать редиректы для плохих URL на пользовательскую страницу 404 в ruby ​​на рельсах? - PullRequest
2 голосов
/ 25 февраля 2012

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

site.com / имя пользователя

Мой метод find в моем контроллере пользователей найдет пользователя по его имени ... теперь, если пользователь не существует, я хочу, чтобы он перенаправил его на пользовательскую страницу ошибки 404, которую я сделаю.

Я также хочу, чтобы они были перенаправлены на любые другие несуществующие URL, которые они вводят.

Я нашел некоторые решения в Google, но мне интересно, кто-нибудь может дать мне актуальный пример того, как это сделать в rails 3.2, так как я нашел тезисы pre-rails 3.1.

С уважением

Ответы [ 5 ]

6 голосов
/ 25 марта 2013

Я попробовал это решение с Rails 3.2, и оно просто работает.

https://makandracards.com/makandra/12807-custom-error-pages-in-rails-3-2

  1. В вашем config/application.rb

    config.exceptions_app = self.routes
    
  2. В вашем config/routes.rb

    get '/404', to: 'errors#not_found'
    get '/500', to: 'errors#server_error'
    
  3. Создать app/controllers/errors_controller.rb

    class ErrorsController < ApplicationController
      def not_found
        render status: 404
      end
    
      def server_error
        render status: 500
      end
    end
    
  4. Создание app/views/errors/not_found.html.haml и app/views/errors/server_error.html.haml (замените haml на erb, если вы не используете haml)

  5. Перезагрузите сервер

0 голосов
/ 06 марта 2012

Вот блог о "пользовательских страницах динамической ошибки в ruby ​​on rails"

пользовательских страниц динамической ошибки в ruby ​​on rails

0 голосов
/ 25 февраля 2012

разве это не в /public/404.html?

UPDATE

На самом деле я уверен, что это та же самая страница 404, которая появляется при запуске моей страницы на nginx в производственном режиме.

0 голосов
/ 26 февраля 2012

вы всегда можете отобразить шаблон 404 вместе с кодом состояния, когда record is not found или invalid URL введено

render :template => 'public/404.html', :status => 404
0 голосов
/ 25 февраля 2012

В производственной среде исключение ActiveRecord::RecordNotFound автоматически отобразит ваш файл public/404.html.

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