角度布线无法正常工作



所以我正在尝试在我的Ruby on Rails应用程序中尝试Angular路由。

问题是,当我登陆一条路线时,假设'/',并且我有一个角度路由,说当我登陆它时,它应该在我想要的目录中加载一个模板,然后我的 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,然后发出请求?

因为如果我将templateUrl:替换为 /users ,这是我应用程序中使用 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文件夹中定义的

这里可能有什么问题?

  1. 您想获取 ERB 模板,您可能希望将 erb 更改为仅 html
  2. 您的模板位于错误的目录中,对于您想要的内容,您需要使用正确的路径,例如:"/assets/angular/templates/index.html"或将您的模板放入公共目录"/public/templates">
  3. 如果您仍然想使用 ERB 来渲染模板,您将需要一些带有路由 (config/routes.rb( 的解决方案,这会在 url:/templates/sth.html 上临时绑定到页面控制器,但我想这是非常丑陋的解决方案。
  4. 我认为最适合您的解决方案是遵循这个很棒的教程:)他们将模板存储在公共/模板目录中。

最新更新