12

間違ったルートを入力した場合、またはルート一致エラーが発生しない場合は、root_pathにリダイレクトします。これどうやってするの?

少し早いですがお礼を

4

6 に答える 6

25

Rails 4/5では、次のことができます

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

編集。@VenkatKが指摘しているように、これが最後のルートになるはずです。ルートが評価される方法は、上部のルートが下部のルートよりも重要であるということです。

于 2013-08-10T08:01:49.990 に答える
17

このステートメントをconfig/routes.rbファイルの最後にします。

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

"*path"何にでも一致し、ルートパスにリダイレクトされます。

詳細については、公式のRailsガイドでルートのグロブリダイレクトを確認してください。

于 2012-12-31T10:10:12.357 に答える
4

これをルートファイル(下部)に配置することで、404をリダイレクトできます。

map.connect '*path', :controller => 'some_controller', :action => 'some_action'

ルートにリダイレクトするには、これを行うことができます。

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

この回答と、例外をキャプチャすることによってそれを行う別の方法には、もう少し詳細があります。

于 2012-12-31T10:05:08.270 に答える
3

最新のRails4.2以降では、match構文が少し変更されています。

これをプロジェクトの下部に配置しますconfig/routes.rb

match '*path', to: redirect('/'), via: :all

于 2016-03-13T19:31:49.583 に答える
1

'public / 404.html'にファイルを作成し、パスが見つからない場合はにリダイレクトします。

get '*path' => redirect('/404.html')
于 2019-05-20T19:43:23.483 に答える
0

さらに、上記の提案された回答のいずれかを使用すると、エラーが発生する可能性がありますYou should not use the "match" method in your router without specifying an HTTP method

その場合は、:via => [:get, :post]リダイレクトに追加できます。

match '*path' => redirect('/'), :via => [:get, :post]
于 2019-09-27T08:46:18.280 に答える