2015-04-02 74 views
1

如何将js(Angular)变量传递给Rails?如何将js变量传递给Rails函数

JSON

[{"id":1,"title":"Test","selected":false,"url":"http://localhost:3000/vacancies/1.json"}] 

__

视图

%div{"ng-repeat"=>"vacancy in vacancies"} # From Angular via JSON 
    - vacancy = Vacancy.find(vacancy.id) # I need to get a record here 

我有这样一个错误undefined method id for nil:NilClass

空缺阵列正在打发罚款

如果这是不可能的,也许有另一种方式?

回答

0

你想达到的效果是不可能的,但有两件事情是关闭一件事是关闭与您当前的做法:

  • 您不能执行一个ActiveRecord从视图模板中查询(即Vacancy.find(...))。此操作通常在控制器内执行。对我而言全脑抽筋 - 这是绝对有可能:P

  • 您正试图用混合解释Ruby代码角范围。你得到nil:NilClass异常的原因是因为在Ruby代码的范围内,没有定义的“空白”变量,即使它是在Angular的范围内定义的。

,你可以实现空缺对象的检索的方式是通过设置你的Rails数据库后端和你的AngularJS前端之间通信的API层。该过程可能类似于:

  • 在您的Rails路由中为您的api定义专用路由。
  • 设置一个Angular控制器,它会触发对特定API路由的GET请求。
  • 一旦这条路线被击中,你的特定的Rails控制器动作就开始了,它可以获取空闲对象并返回一个JSON响应。
  • 然后,您的Angular代码可以处理提供的响应,将返回的空缺JSON对象分配给$scope.vacancies
  • 然后,您可以在您的视图中执行ng-repeat,并且您将在vacancies集合中拥有完整的空缺对象,而无需将每个对象作为单独的请求提取。

我认为this article可以给你一个更清晰的例子来解决。

关于将Rails与AngularJS集成的主题,有大量信息可以涵盖,我知道你并没有特别要求,但本书涵盖了Rails和Angular相结合的基础知识。 AngularJS + Rails

+1

其实我可以在视图模板中执行查询。它工作的一切:) 谢谢你的链接。 – 2015-04-02 18:53:46

+0

这没问题!我希望这有帮助!我编辑了我的答案,以排除不正确的第一个要点 - 不知道为什么我写道它不能完成:P感谢您的反馈! – Zoran 2015-04-02 19:14:45