我正在使用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变量?
答案 0 :(得分:2)
这里的一个问题就是你的文件应该被称为foo.js.erb
来编译ruby。
另外,我想你想这样做:
var class_a = <%= @students.select { |s| s.class_id == 'a' }.to_json %>
(注意双等号)
你甚至可能更好地找到你控制器中的特定学生并单独传递每个学生 - 这将是一个更好的关注点分离,并会使你的观点保持这种逻辑。