Ошибка при использовании Restangular с Rails: [$injector:modulerr]

#ruby-on-rails #angularjs #restangular

#ruby-on-rails #angularjs #restangular

Вопрос:

РЕДАКТИРОВАТЬ: Restangular зависит от Lodash или подчеркивания!! Как только я установил Lodash, все заработало


Как? Я просто хочу выполнить базовое подключение, чтобы начать работу…

Итак, вот мой контроллер

 AngulaRails.controller "BooksController", ($scope, Restangular) ->

allbooks = Restangular.all('books')

$scope.getBooks = ()  ->
  allbooks.getList().then (response) ->
    console.log(response)
    $scope.books = response
  

Вот мой взгляд на rails (я не балуюсь с маршрутами в angular, просто для упрощения):

 <div ng-app="AngulaRails" ng-controller="BooksController" ng-init= "getBooks()">
  <h3>booksbooksbooks</h3>
  <div>{{ books }}</div>
</div>
  

Вы видите, что я вызываю функцию getBooks(), как определено в контроллере

Вот мой контроллер rails:

 class BooksController < ApplicationController
  before_action :set_book, only: [:show, :edit, :update, :destroy]


  # GET /books
  def index
    @books = Book.all
    @pages = Page.all

    respond_to do |format|
      format.html {}
      format.json {render json: @books, root: false, each_serializer: BookSerializer }

    end
  end
  

Я знаю, что там есть какая-то странная информация о root и сериализаторе и еще много чего, но я также пытался просто отобразить json: @books безрезультатно.

Мой браузер покажет Booksbooksbooks, а затем просто буквально {{ книги }} Вот сообщение об ошибке с моей консоли:

Ошибка: [$injector:modulerr]http://errors.angularjs.org/1.2.8 /$injector/modulerr?p0=AngulaRailsamp;p1=[$injector:modulerr] http://errors.angularjs.org/1.2.8/$injector/modulerr?p0=restangular&p1=_%20is%20not%20defined%0Aa.init%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Frestangular.min.js%3Fbody%3D1%3A7%3A577%0A%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Frestangular.min.js%3Fbody%3D1%3A7%3A10268%0Ad%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A31%3A451%0Ag%2F%3C.instantiate%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A32%3A585%0Ac%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A29%3A499%0Aa%2F%3C%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A29%3A438%0Ae%2F%3C%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A30%3A302%0Aq%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A8%3A276%0Ae%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A30%3A123%0Ae%2F%3C%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A30%3A181%0Aq%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A8%3A276%0Ae%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A30%3A123%0A%24b%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A33%3A238%0AZb%2Fc%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A18%3A437%0AZb%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A19%3A141%0ATc%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A18%3A220%0A%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fangular.min.js%3Fbody%3D1%3A202%3A125%0AjQuery.Callbacks%2Ffire%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fjquery.js%3Fbody%3D1%3A3120%3A1%0AjQuery.Callbacks%2Fself.fireWith%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fjquery.js%3Fbody%3D1%3A3232%3A7%0A.ready%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fjquery.js%3Fbody%3D1%3A3444%3A3%0Acompleted%40http%3A%2F%2Flocalhost%3A3000%2Fassets%2Fjquery.js%3Fbody%3D1%3A3475%3A3%0A
F/<@http://localhost:3000/assets/angular.min.js%

У меня такое ощущение, что Restangular даже не привыкает…

РЕДАКТИРОВАТЬ: Restangular зависит от Lodash или подчеркивания!! Как только я установил Lodash, он работает

Комментарии:

1. Никогда не использовался Restangular , так что это может быть нюансом, но, взглянув на документы, похоже, что ваше использование all отменено. Этого не должно быть Restangular.all('books') ?

2. Да и да…. но, к сожалению, я все еще получаю ту же ошибку. В документах по этой ошибке говорится, что это означает «не удалось создать экземпляр модуля AngulaRails», который является моим конкретным приложением angularails

Ответ №1:

Вам нужно добавить Lodash, это зависимость от restangular

в application.js

 //= require lodash/dist/lodash.min
//= require angular/angular
//= require restangular/dist/restangular