在Ruby on Rails 4.x中正确嵌入JavaScript变量

时间:2014-02-24 21:00:51

标签: javascript ruby-on-rails ruby

我正在使用Ruby on Rails 4,我正在尝试编写一个需要填充服务器端数据的JavaScript。例如,我可能有一个名为StudentsController的控件,我想从特定的类中返回所有特定的学生。所以在我的控制器中我可能会这样做:

def index
  @students = Student.all
end

然后我在/app/assets/javascripts/中有一个名为foo.js的脚本,在那里我试图将学生分开class_id

foo.js

中的

$(function() {
    var class_a = <%= @students.select { |s| s.class_id = 'a' }.to_json %>
    var class_b = <%= @students.select { |s| s.class_id = 'b' }.to_json %>
})

当我在浏览器端检查事物时,问题class_a为空。我假设foo.js没有与StudentsController相关联,也没有看到@students。以这种方式连接JavaScript的正确方法是什么,以便我可以使用服务器端对象访问javascript变量?

1 个答案:

答案 0 :(得分:2)

这里的一个问题就是你的文件应该被称为foo.js.erb来编译ruby。

另外,我想你想这样做:

var class_a = <%= @students.select { |s| s.class_id == 'a' }.to_json %>

(注意双等号)

你甚至可能更好地找到你控制器中的特定学生并单独传递每个学生 - 这将是一个更好的关注点分离,并会使你的观点保持这种逻辑。