2016-06-12 7 views
0

Я начал использовать AngularJS с моим Rails-приложением, но когда я попытался реализовать поставщиков маршрутов с помощью Angular, он не работает, и вместо моего шаблона отображается Rails.AngularJS routing with Rails

routes.rb:

root 'tutorials#index' 

TutorialsController:

def index 
    @tutorials = Tutorial.all 

    respond_to do |format| 
     format.html 
     format.json { render :json => @tutorials } 
    end 
end 

приложение/просмотров/учебники/index.html.erb:

<html ng-app="Tutorial"> 
<body> 
    <div class="container" ng-view> 
    </div> 
</body> 

активы/JavaScripts/tutorials.js:

var Tutorial = angular.module('Tutorial', ['ngRoute']); 

Tutorial.config (функция ($ routeProvider, $ locationProvider) {

$ log.debug ("Настройка $ routeProvider ...");

$locationProvider.html5Mode(true); 

$routeProvider. 
when('/tutorials', { 
    templateUrl: '../templates/tutorials/index.html', 
    controller: 'TutorialController' 
}). 
otherwise({ 
    templateUrl: '../templates/tutorials/index.html', 
    controller: 'TutorialController' 
}); 

});

и assets/templates/tutorials/index.html только что отображаемый заголовок учебников с контроллером, который не показан в tutorials.js, потому что здесь это не актуально.

Поэтому вместо того, чтобы мой поставщик углового маршрута перенаправил меня на index.html, у меня есть пустая страница, представляющая мой index.html.erb.

Любая идея?

Спасибо!

ответ

0

Эта проблема во многом вызвана турболинками.

Вы должны удалить следующую строку из вашего приложения/активов/JavaScripts/application.js файла:

//= require turbolinks 

если вы уже удалили turbolinks, измените эту строку что-то вроде этого:

из

$locationProvider.html5Mode(true); 

в

$locationProvider.html5Mode({ 
    enabled: true, 
    requireBase: false 
});