2017-01-27 2 views
0

Хорошо ... Итак, я установил UI Router и Rails-шаблоны для обработки AngujarJs в моем проекте. Пока что все в порядке. За исключением того, что введите url вручную в панель chrome (например, localhost: 3000/sign_in), я получаю «Нет маршрутов для/sign_in» (ошибка Ruby).Ruby on rails и UI Router не работают должным образом

Но если в моем приложении у меня есть кнопка для изменения моего состояния ($ state.go) в этом знаке sign_in, работает просто отлично.

Что происходит?

ответ

0

Что происходит, так это то, что ваше угловое приложение перехватывает изменения в панели местоположений для своих целей и не позволяет браузеру делать HTTP-запрос на новый URL-адрес, поэтому все хорошо после инициализации приложения.

Когда вы перезагружаете страницу, приложение js не загружается сначала, поэтому браузер отправляет местоположение в новой загрузке страницы на сервер. Но поскольку сервер не знает о маршрутах углового приложения, он пытается ответить своим собственным обработчиком, который в этом случае не существует.

Самый простой способ исправить это сейчас - это, вероятно, изменить конфигурацию ui-router, чтобы включить # в URL-адрес.

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

Это должно начинаться с # перед угловой частью маршрута. Новый путь будет «/ #/sign_in». Браузер будет знать, что нужно отправить «/» до # на сервер, что сделает страницу с угловым init в int, а затем угловым может обрабатывать часть «/ sign_in» после #.

Смежные вопросы