Вот мой код в Синатре:
get '/' do
@title = 'AngularJS html5Mode: true'
haml :main
end
И AngularJS:
angular.module('myApp', ['ngResource']).config(function($routeProvider, $locationProvider) {
$routeProvider.when('/sweets/:id', {
templateUrl: '/sweet.html',
controller: 'SweetCtrl'
}).otherwise({
redirectTo: '/'
});
$locationProvider.html5Mode(true);
});
Это работает отлично, но после перезагрузки страницы с /sweets/1
url, Sinatra выбрасывает исключение, потому что url был изменен на стороне клиента AngularJS, и Sinatra не может найти URL-адрес, что является абсолютно правильным поведением для Sinatra. Теперь вопрос заключается в том, как справляться с этими исключениями в Синатре? Какой маршрут я должен определить? Обратите внимание, что мне все еще нужна Синатра, чтобы бросать исключения в других случаях.
Вы должны разрешить все маршруты в синатре, такие же, как ваша конфигурация углового маршрута. Так,
get '/' do
@title = 'AngularJS html5Mode: true'
haml :main
end
get '/:id' do
@title = 'AngularJS html5Mode: true'
haml :main
end