angular-rails-模板加载模板失败

angular-rails-templates Failed to load template

我正在尝试让 Angular 加载模板:

var app = angular.module("myApp", ['templates'])

和我的 html:

<div ng-app="myApp">
  <div ng-include="'blah.html'"></div>
</div>

但我得到的只是 404 Failed to load resource 因为 Rails 告诉我 No route matches [GET] "/blah.html"。据我了解,这是因为 Rails 中的资产管道。 blah.html/app/assets/javascripts/templates/blah.html 中,我正在使用 angular-rails-templates gem 来尝试解决问题。所以我的 application.js 有:

//= require angular-rails-templates
//= require_tree ./templates

但是我运气不好。

生成的 html 表明 angular-rails-templates 正在加载(它有一个脚本 /assets/angular-rails-templates....js)但是 rails 找不到 blah.html

Versions:
rails 4.2.1
angular-rails-templates 0.1.4
angularjs 1.3.15

我将 angular 模板文件放在 public/templates 下,无需任何额外配置即可通过 <site root>/templates 访问。

我今天一直在为同样的问题苦苦挣扎,我想我已经找到了解决这个问题的方法。

尝试

<div ng-include="'assets/blah.html'"></div>

<div ng-include="'assets/templates/blah.html'"></div>

而不是

<div ng-include="'blah.html'"></div>

这解决了我的问题。

这原来是链轮不兼容(参见 and here

简短版本是:

  1. gem 'sprockets', '2.12.3' 添加到您的 Gemfile
  2. 运行 bundle update sprockets

[更新] 我不是这方面的专家,但确实有很多人比我建议的使用 /public/templates 更聪明。您可能需要牢记这一点。

我遇到了类似的问题 - 匆忙中,我忽略了完整阅读说明,因此错过了 step 3

在 Angular 应用程序模块中添加依赖项为我解决了这个问题,模板通过资产管道提供...

//= require angular-rails-templates
//= require_tree .

angular.module('d-angular', ['templates'])

经过一个小时的努力才得到这个,我意识到我有一个 JavaScript 共享相同名称的文件。

例如,这些文件会引起冲突:

component.js
component.html.haml

所以我确保将 JavaScript 文件重命名为:

component-directive.js
component.html.haml