#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