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