我有一个集合,想用它生成一个javascript对象

时间:2011-04-21 02:01:11

标签: javascript ruby-on-rails

我有一个集合:

@products = Product.where("product_type = ?", 3)

我现在想创建一个javascript对象,这样我就可以在UI中执行查找,如:

my_products[2342]

它会返回:

"some_name"

我相信它应该是这样的:

var my_products = {
     2342: "some_name",
     5321: "there blah"

}

在我的控制器动作中生成这个的好方法是什么?

2 个答案:

答案 0 :(得分:3)

ActiveRecord和Ruby通常有一个方法to_json,可以帮助你做你想要的。

基本上构造要在Ruby中创建的数组,并调用to_json来创建一个字符串,该字符串是一个有效的javascript对象。

答案 1 :(得分:1)

我建议使用to_json,但是如果你想要另一个选项,你可以使用js.erb模板生成js对象文字表示法。

<强>视图/产品/ products.js.erb

var products = {
<% @products.each do |product| %>
  <%= "#{product.id}: \"#{@product.name}\"," %>
<% end %> 
}

然后,使用专用方法或responds_to块设置控制器方法。最后,让AJAX调用该方法并执行返回的代码,这将导致您可以访问js.erb模板中定义的产品变量。

相关问题