1

I am trying to incorporate some Angularjs code into a test application, but cannot make it work. I try to make a call/interaction with the database.

Here's what I did:

Installed the gem 'angularjs-rails' gem.

In application.html.erb:

<html ng-app="MongoAngularApp">
  ...
  <div class="container" ng-controller="PostsCtrl">
    <%= yield %>
  </div>
  ...

Link:

<%= link_to 'Delete', '', :'ng-click' => "destroy(#{post.id})", :'data-confirm' => 'Are you sure?', :id => "post_#{post.id}" %>

The Angularjs code is in the posts.js file:

var app = angular.module('MongoAngularApp', ['ngResource']);

app.factory('Post', function($resource) {
    return $resource("posts/:id", { id: '@id' }, {
        index:   { method: 'GET', isArray: true, responseType: 'json' },
      show:    { method: 'GET', responseType: 'json' },
      update:  { method: 'PUT', responseType: 'json' }
    });
})

app.controller("PostsCtrl", function($scope, Post) {
  $scope.posts = Post.index();

  $scope.deletePost = function(index) {  
        alert("!");
    post = $scope.posts[index];
    Post.delete(post);
    $scope.posts.splice(index, 1);
  }
})

When I run this, in the JS console I see the following error:

Uncaught Error: [$injector:modulerr] Failed to instantiate module MongoAngularApp due to:
Error: [$injector:modulerr] Failed to instantiate module ngResource due to:
Error: [$injector:nomod] Module 'ngResource' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

I double-checked the module name, and that's good. I tried a simple binding with Angularjs and it was working, so Angularjs should be properly loaded too.

What is wrong with ngResource? I checked some tutorials on the Internet and it was used just as angular.module('angular_app_name', ['ngResource']).

What am I missing here?

Thank you.

EDIT:

I am using AngularJS v1.4.7

1
  • did you add it in your script tags on your index page? Commented Oct 15, 2015 at 17:52

1 Answer 1

4

Make sure you have both of these lines in application.js

//= require angular
//= require angular-resource
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.