2015-08-23 61 views
0

我試圖使用Angular和Rails將電影標題保存到我的數據庫,但是我收到一些錯誤,並且我想我知道問題是什麼,但是我不知道如何解決它。

設置,

這是我的搜索模板。當用戶點擊addMovie div時,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中的movie.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' 
) 

當我點擊addMovie DIV我得到這個錯誤,

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

我folled上thinkster.io的角/ Rails的教程和東西我注意到的是,當我去localhost:3000/posts.json我得到一個頁面,包含我創建的所有帖子(在教程期間)。但當我去localhost:3000/movies.json我得到No route matches [GET] "/movies.json"

回答

2

當然它不是。

更換

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

有了:

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

旁註,HAML讓你寫漂亮的HTML道具,如:

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

讓SENCE,我剛剛更換所有文章與電影。愚蠢的舉動(仍在學習)。謝謝。 –

+0

我有另一個有關這個問題的問題。我已經說過我無法訪問'localhost:3000/movies.json'我已經再次閱讀了thinkster教程,但無法看到創建該文件的過程在哪裏。我有一個'localhost:3000/posts.json',但無法弄清楚如何爲movies.json創建它。 –

+0

你需要路線'資源:電影'和一個控制器 – apneadiving

相關問題