TypeError: $ http.电影不是一个函数



我试图保存一个电影标题到我的数据库使用Angular和Rails,但我得到一些错误,我想我知道问题是什么,但我不知道如何修复它。

设置,

这是我的搜索模板。当用户单击addMoviediv时,addMovieCtrl触发并尝试保存输入。

%div{"ng-controller" => "searchCtrl", :id => "container_search"}
  #addMovie{"ng-controller" => "addMovieCtrl"}
    %div{"ng-click" => "addMovie()"}
      %input{:type => "text", "ng-model" => "title"}
      addMovie action.

这是movieController.js,

angular.module('addMovieseat', ['ui.router', 'templates'])
  .controller('addMovieCtrl', ['$scope', 'movies',
    function($scope, movies){
      $scope.movies = movies.movies;
      $scope.addMovie = function(){
        console.log ("Hello")
        if(!$scope.title || $scope.title === '') { return; }
        movies.create({
          titles: $scope.title,
        });
        $scope.title = 'Star wars';
      };
    }
  ])

这是movieservice。js

angular.module('addMovieseat')
  .factory('movies', ['$http', function($http){
    var o = {
      movies: []
    };
    o.create = function(movie){
      return $http.movie('/movies.json', movie).success(function(data){
        o.movies.push(data);
      });
    };
    return o;
  }])

这部电影。Rails中的rb模型

class Movie < ActiveRecord::Base
  def as_json(options = {})
  end
end
我app.js.coffee

@myApp        = angular.module('myApp',[]);
@flapperNews  = angular.module('flapperNews',[]);
@app          = angular.module('movieseat', ['addMovieseat','myApp', 'flapperNews', 'ui.router', 'Devise']);
# for compatibility with Rails CSRF protection
@app.config([
  '$httpProvider', ($httpProvider)->
    $httpProvider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content')
])
@app.run(->
  console.log 'angular app running'
)

当我点击addMoviediv我得到这个错误,

TypeError: $http.movie is not a function at Object.o.create

我已经在thinkster上学习了Angular/Rails教程。我注意到的是,当我去localhost:3000/posts.json时,我得到了一个页面,上面有我创建的所有帖子(在教程期间)。但是当我进入localhost:3000/movies.json时,我得到的是No route matches [GET] "/movies.json"

当然不是。

代替

$http.movie('/movies.json', movie)

:

$http.post('/movies.json', movie)

旁注,haml允许您编写漂亮的html道具,如:

%div( ng-click="addMovie()" )

最新更新