将Angular.js与Rails集成

时间:2016-02-27 05:03:04

标签: javascript ruby-on-rails angularjs ruby

背景

我开始构建一个带有Angular.js前端和Rails后端的应用程序。通过thinkster教程,我相信我只需要bower来帮助我安装angular和bootstrap包(基本上是前端依赖项)。然后我需要通过Rails中的资产管道来要求包,使用一些额外的宝石,我应该好好去。

问题

要查看事情是否正常,我在app / assets / javascripts / home中有一个非常简单的_home.html文件,应该通过ui-router在'home'状态下加载(ui-router配置是在app.js)。当正确加载ui-view状态时,最终结果应该是显示“ScholarShipIt”和“Home Template”的页面。但是,它只显示“ScholarShipIt”,它告诉我状态没有加载。

疑难解答

我已尝试在js文件中的各个位置输出文本到控制台,以查看正在加载的位置。我也尝试在app.js文件中设置$ scope.test,然后设置一个表达式来显示该值,但这也不起作用。我的印象是角度包装没有正确加载,我不确定我缺少什么。

代码示例

使用的相关宝石

gem 'angular-rails-templates'
gem 'angular-ui-bootstrap-rails'
gem 'angular_rails_csrf'
gem 'responders'
gem 'sprockets'

的application.js

//= require angular
//= require angular-rails-templates
//= require angular-ui-router
//= require angular-ui-bootstrap
//= require_tree .

app.js

(function(){
  var app = angular.module('scholarShipIt', ['ui.router','templates']);

  app.config(function($stateProvider, $urlRouterProvider){

    $stateProvider
      .state('home', {
      url: '/home',
      controller: 'HomeController',
      templateUrl: 'home/_home.html'
    });

  $urlRouterProvider.otherwise('home');
  });

}());

HomeController.js

(function() {
  var app = angular.module('scholarShipIt');

  var HomeController = function($scope) {
    $scope.test = "testing";
  };
  console.log("test");

  app.controller('HomeController', HomeController);
}());

主要问题

我的应用程序中Rails需要加载角度文件的内容是什么?

(我很想知道你通常如何设置应用程序)

GitHub Repo

1 个答案:

答案 0 :(得分:0)

我的javascript_include_tag在'application'之后有一些错误的文字