Подтвердить что ты не робот

Rails: перенаправить все неизвестные маршруты в root_url

Всякий раз, когда пользователь нажимает неверную страницу, рельсы показывают 404.html из общей папки. Однако я бы хотел просто перенаправить браузер на корневую страницу, не показывая ничего. Поэтому я попытался подтолкнуть, но не помог, он все еще показывает страницу 404. Здесь выдержка из файла маршрутов:

# ...
map.root :controller => 'home', :action => 'home'
map.connect '*', :controller => 'home', :action => 'home'

Любые предложения? Спасибо, ребята!

4b9b3361

Ответ 1

Если ваш проект приведен в действие рельсами 3, добавьте просто эту строку к вашим маршрутам. rb

match '*path' => redirect('/')

Изменить: поддержка Rails 4

match '*path' => redirect('/'), via: :get
or
get '*path' => redirect('/')

Ответ 2

Как ответ Аркана. Один момент, если вы не хотите этого поведения в среде разработки, тогда мог бы сделать -

match '*path' => redirect('/')   unless Rails.env.development?

Ответ 3

Рельсы 4 -

(routes.rb)

Вы можете использовать простой get для перенаправления всех неизвестных маршрутов.

  get '*path', to: 'home#index'

Если вы хотите предоставить маршрутизацию для обоих запросов POST и GET, вы все равно можете использовать совпадение, но Rails хочет указать метод запроса через via.

  match "*path" => "home#index", via: [:get, :post]  

Помните, что routes.rb выполняется последовательно (соответствующий первому маршруту, который соответствует структуре пути), поэтому установите подстановочный знак в нижней части ваших совпадений.

Ответ 4

Вам нужно создать контроллер, чтобы сделать это

class RedirectsController 

  def index
    redirect_to root_url
  end
end

И на ваших маршрутах

map.connect '*', :controller => 'redirects', :action => 'index'