angular-rails-模板:找不到模板

angular-rails-templates: templates are not found

我有一个 rails 应用程序,使用 angularjs 进行客户端开发。我尝试加载位于“app/assets/javascripts/templates/”的模板:

myApp.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/', {
        templateUrl: '/index.html',
        controller: 'MainController'
      }).
      otherwise({
        redirectTo: '/'
      });
  }]);

但我总是得到一个错误:"Error: [$compile:tpload] Failed to load template: /index.html"。

我试图将 "templates" 文件夹移出 javascripts - app/assets/templates 并通过将以下行添加到 config/application 将其添加到我的资产管道加载中].rb: config.assets.paths << Rails.root.join("app","assets","templates")

在使用模板的完整路径之前,我一直收到相同的错误消息:templateUrl: '/assets/index.html',

  1. 为什么第一种方法不行? angular-rails-模板 gem 不应在 app/assets/javascripts/templates?

  2. 中查找模板
  3. 为什么我应该使用 javascript 中资产的完整路径?

试试这个,我希望它能奏效。

 myApp.config(function ($routeProvider) {
  $routeProvider.
    when('/', {
     templateUrl: '/index.html',
     controller: 'MainController'
    }).
    otherwise({
     redirectTo: '/'
   });
});

实践表明,您应该将 Angular 个模板保存在 ./public 文件夹中。例如,在 public 文件夹中创建一个名为 templates 的文件夹。现在您可以这样称呼它们:templateUrl: 'templates/index.html'

这是有道理的,因为 app/assets/ 确实只用于 javascript 和 css 文件。在 app/views 中还有 html 文件,但这些文件是由服务器编译的,因为它们使用 .erb 扩展名。您想要的是准备好随时可以使用的常规 html 文件。所以你把它们放到 public 文件夹。

我的问题是 sprockets 不兼容。版本 2.1.3 可以工作,所以我把它放在我的 Gemfile:

gem 'sprockets', '2.12.3'

我 运行 bundle update sprockets 都是桃色的。

我通过将 "gem 'sprockets'" 添加到 Gemfile

中解决了这个问题