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

ruby on rails - I have a collection, want to generate a javascript object with it

本文关键字:一个 对象 javascript 集合 有一个      更新时间:2023-09-26

我有一个集合:

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

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

my_products[2342]

,它将返回:

"some_name"

我认为它应该是这样的:

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

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

ActiveRecord和Ruby一般有一个方法to_json,应该帮助你做你正在寻找的。

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

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

视图/产品/products.js.erb

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

然后,使用专用方法或responds_to块设置一个控制器方法。最后,让AJAX调用该方法并执行返回的代码,这将使您能够访问js中定义的product变量。erb模板。