0
所以我試圖在我的Ruby on Rails應用中嘗試角度路由。角度路由不能正常工作
問題是,當我着陸在一條路線上時,我們假設爲'/'
,並且我有一個角度路由,表示當我登陸它時,它應該在我所需的目錄中加載一個模板,然後我的Rails服務器將會拋出這個錯誤:
Started GET "/templates/index.html.erb" for 127.0.0.1 at 2014-12-02 18:03:39 +0200
ActionController::RoutingError (No route matches [GET] "/templates/index.html.erb"):
所以基本上它似乎並不試圖從文件夾中加載我的文件,而是它試圖把我說的URL角路由路徑,然後發出請求?
因爲如果我用/users
替換templateUrl:
,這是我的應用中用html響應的實際路由,那麼它將有效地路由到它。但那不是我想要的行爲。
我希望Angular用我輸入被叫路線時指定的模板替換我的ng-view中的html模板。
這裏是我的角度路由代碼:
App = angular.module("App", ['ngRoute', 'growlNotifications'])
App.config ($httpProvider) ->
authToken = $("meta[name=\"csrf-token\"]").attr("content")
$httpProvider.defaults.headers.common["X-CSRF-TOKEN"] = authToken
App.config ($routeProvider, $locationProvider) ->
$locationProvider.html5Mode true
$routeProvider
.when '/',
templateUrl: 'templates/index.html.erb',
controller: 'VisitorsCtrl'
.when '/users',
templateUrl: '../../views/users/index.html.erb',
controller: 'UsersCtrl'
.otherwise redirectTo: "/"
而且,在我application.html.erb
我已經設置了base href
到'/'
我的模板位於目前像這樣:app/assets/javascripts/angular/templates
和我的路由定義angular
文件夾
這裏有什麼問題?
會給你的解決方案一個嘗試並報告回來! – Kaspar 2014-12-03 10:20:17
好吧,我通過將文件更改爲.html並使用您提供給我的路徑來解決問題。但爲什麼它是'assets/angular/templates/public.html'?當角度文件夾也在JavaScript文件夾中,而不僅僅是資產文件夾? – Kaspar 2014-12-03 14:32:58
這就是資產如何通過Sprockets從Rails編譯和發佈的方式。如果您的資產目錄中仍然有模板,那麼您在生產環境中可能會遇到問題... – 2014-12-03 18:20:41