3

AngularJS と Rails を使用して、単一ページの Web アプリケーションに取り組んでいます。

また、URL の # 記号に問題があります。

$routeProvider はハッシュ記号を追加して、URL が /#/post のようになるようにします。私が望むのは次のとおりです。このコードは実際に機能します。

しかし、新しい問題が発生します.http://example.com/testのようなURLを入力すると(存在しませんでした)、Railsエラーページにリダイレクトされ、このようなルートはありません. 問題は、ルートが Rails ルートによって処理されたのはなぜですか? AngularJS の $routeProvider API によって処理されるべきではありませんか?

$routeProvider.otherwise({redirectTo: '/'})

ルート パスにリダイレクトする必要がありますが、エラーの Rails ページが表示されます。/post (exist) と入力すると、Rails エラー ページ (ルートなし) にもリダイレクトされますが、/#/post は正常に動作します。修正するにはどうすればよいですか?

4

1 に答える 1

3

AngularJS ルーターは、ページが読み込まれた後にのみ責任を負います。ハッシュタグ(#)が正常に動作するのは、#以降のパス名がrailsに渡されていないためです。したがって、入力/#/testすると、Rails ルーターへのルート パスを意味します。ただし、/testレールに入ると、ルートが存在するかどうかが検索されます。

簡単な方法の 1 つは、欠落しているすべてのルートに対して同じ角度のページをレンダリングすることです。ルート ファイルの最後で、次のようにします。

get '*path' => "home#index"

于 2013-11-13T18:53:54.613 に答える