2017-01-27 11 views
0

申し訳ありません。私は、私のプロジェクトでAngujarJsを処理するためのUIルーターとRailsのテンプレートをインストールしました。これまでのところすべてが大丈夫です。クロムのバーに手動でURLを入力する場合(例:localhost:3000/sign_in)は、「/ sign_inに一致するルートがありません」(Rubyエラー)というメッセージが表示されます。Ruby on RailsとUI Routerが正しく動作しない

しかし、自分のアプリケーションで、私の状態($ state.go)をそのsign_inビューに変更するためのボタンがあればうまく動作します。

何が起こっているか

答えて

0

あなたの角型アプリケーションは、独自の目的のためにロケーションバーへの変更を傍受しており、ブラウザが新しいURLへのhttp要求をしないようにしています。

ページをリロードすると、jsアプリケーションが最初にロードされないため、ブラウザは新しいページのロード先をサーバーに送信します。しかし、サーバは角度アプリのルートを知らないので、それ自身のハンドラで応答しようとします。この場合は存在しません。

これを修正する最も簡単な方法は、恐らくui-routerの設定を変更してURLに#を含めることです。

angular.module('app', ['ui.router']) 
    ...snip 
    $locationProvider.html5Mode(false); 
}); 

これは、ルートの角の部分の前に#を含めて開始する必要があります。新しいパスは "/#/ sign_in"になります。ブラウザーは#の前に "/"をサーバーに送ることを知っています。これはページをintの角度initでレンダリングし、#の後に "/ sign_in"部分を扱うことができます。

関連する問題