如何从angularJS控制器中访问Rails实例变量

时间:2019-07-08 14:45:57

标签: ruby-on-rails angularjs

我有一个连接到angularJS客户端的Rails应用程序。 (连接通过someview.html.erb文件(称为嵌入式红宝石)进行。 我在里面有一个Rails控制器:

@books = Book.find(1)

我想在我的angularJS控制器中访问此@books变量:例如:

@scope.list_of_books = @books

我有什么选择?

注意:这篇文章:Accessing Rails instance variable in AngularJS 没有帮助我。 (我也无法意识到与$ http whatsover的连接是什么,或者$ scope。$ apply

是什么。

1 个答案:

答案 0 :(得分:0)

以上文章解决了我的问题: https://spin.atomicobject.com/2013/11/22/pass-rails-data-angularjs/ 提供了一些有趣的,但很棘手的解决方案来访问angularJS应用程序内的rails实例变量。 一种解决方案(hacky):

<div ng-controller="itemsControllerNgInit" 
     ng-init="init('<%= @item.name %>', <%= @item.cost %>, <%= @item.id %>)">
  <h2> {{item.name}} ({{item.id}}) costs {{item.cost | currency}}  {{test}} </h2>
</div>

和控制器:

function itemsControllerHiddenDiv ($scope) {
    var div = document.getElementById('div-item-data');

    $scope.item = {name: div.getAttribute("data-item-name"),
                   cost: div.getAttribute("data-item-cost"),
                   id:   div.getAttribute("data-item-id")
    };
}