如何将js变量传递给Rails函数

时间:2015-04-02 16:44:44

标签: javascript ruby-on-rails ruby ruby-on-rails-4

如何将js(Angular)变量传递给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

职位空缺阵列令人担忧

如果这是不可能的,可能还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

你试图实现的结果并非不可能,但是是两件关闭的东西是你现有方法的一件事:

  • 您无法在视图模板中执行ActiveRecord查询(即Vacancy.find(...))。此操作通常在控制器内执行。 我的全脑抽筋 - 这绝对可能:P

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

实现Vacancy对象检索的方法是通过API层设置,以便在Rails数据库后端和AngularJS前端之间进行通信。该过程可能类似于:

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

我认为this article可以为您提供更清晰的示例。

关于将Rails与AngularJS集成的主题有大量的信息,我知道你没有具体要求这个,但是本书涵盖了很好地集成Rails和Angular的基础知识。 AngularJS + Rails