4

我正在尝试让 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-templatesgem 来尝试解决问题。所以我application.js有:

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

但我没有任何运气。

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

版本:
rails 4.2.1
angular-rails-templates 0.1.4
angularjs 1.3.15

4

5 回答 5

11

结果证明是链轮不兼容(请参见此处此处

简短的版本是:

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

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

于 2015-04-20T19:59:39.720 回答
2

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

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

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

angular.module('d-angular', ['templates'])
于 2015-05-03T22:06:12.920 回答
1

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

于 2015-04-14T20:31:01.693 回答
1

在挣扎了一个小时后,我意识到我有一个共享相同名称的 JavaScript 文件。

例如,这些文件会导致冲突:

component.js
component.html.haml

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

component-directive.js
component.html.haml
于 2016-01-30T09:29:49.667 回答
0

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

尝试

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

或者

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

代替

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

这为我解决了这个问题。

于 2015-04-17T16:27:16.743 回答