使用angularjs和rails加载html模板

使用angularjs和rails加载html模板,angularjs,templates,ruby-on-rails-4,Angularjs,Templates,Ruby On Rails 4,我无法使用angularjs在rails应用程序中加载模板。以下是我的设置 #app/assets/javascripts/app.js app = angular.module('app', ['ui.router', 'templates']) app.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise("/home"); $stateProvider .stat

我无法使用angularjs在rails应用程序中加载模板。以下是我的设置

#app/assets/javascripts/app.js
app = angular.module('app', ['ui.router', 'templates'])
app.config(function($stateProvider, $urlRouterProvider) {
  $urlRouterProvider.otherwise("/home");
  $stateProvider
    .state('home', {
      url: '/home',
      templateUrl: 'home.html'
    })
});

#app/assets/javascripts/templates/home.html
<h1>abc</h1>

#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require angular/angular
//= require angular-ui-router/release/angular-ui-router
//= require angular-rails-templates
//= require_tree ./templates
//= require_tree .

#app/views/layouts/application.html.erb
<body ng-app="app">
<div ui-view=''></div>
但是如果我使用
template
而不是
templateUrl
,并提供内联html,它就可以正常工作

任何帮助都将不胜感激……)

我正在使用
angular-rails-templates-0.1.3
rails-4.2.0
尝试更改:

templateUrl: 'home.html'
致:


看起来
angular rails templates
的版本有一个bug,该bug在0.1.4()中已修复。因此,将gem更新到一个更新的版本应该可以修复这个bug

尝试更新您的
angular rails模板版本

我不建议手动放置
'/javascripts/templates/home.html'
(或正确的格式:
'/assets/javascripts/templates/home.html'
),因为这是资产管道的一部分

编辑:如果Sprocket 3+是必需的(例如,对于ES6 Javascript语法),则必须寻找不同的修复方法。建议在此线程中使用两个可能的修复程序:。然而,
angular rails templates
项目的维护人员似乎在解决这个问题时遇到了一些问题


虽然mcasimir建议用一个简单的Ruby初始值设定项和几行JS代码替换
angular rails模板
,但如果升级
angular rails模板
(/downgrading
Sprocket
)不是一个选项,谢谢你的回答,但还是一样的
http://localhost:3000/javascripts/templates/home.html 404(未找到)
;(谢谢你的回答(很抱歉接受得太晚,我没有时间做这件事),我关注了问题#95,我不得不降级
'sprockets',2.12.3'
,然后它开始工作。但是,快速提问,你对依赖旧版本的
sprockets
有什么想法?这取决于你的用例。有些库依赖于sprockets 3,因此如果你需要其中任何一个,你可能会有问题。That说,看起来<代码>angular rails templates理解这一点,并正在积极尝试进行修复。我认为我现在会选择最简单的方法,而不是过于担心它。最终,如果angular rails templates停止运行,那么将其细分为angular rails templates或任何其他中间件可能不会太困难也就是说,如果你真的很担心,你可以在模板引用中添加一个应用程序范围的名称空间:
templateUrl:appConfig.templatesNamespace+'home.html'
,你可以将它分为
“/assets/javascripts/templates/”
。我个人不会走这条路,因为这看起来太像是等待问题的解决方案(有什么意义?),而且似乎其他维护代码的开发人员可能会滥用它。谢谢你的评论,我听到了你的观点。我现在不应该过度思考问题,
如果问题没有坏掉,就不要修复它。
:D
templateUrl: 'home.html'
templateUrl: '/javascripts/templates/home.html'