0

我正在寻找一种将 ruby​​ 实例用作数组或列表的方法,可以在 javascript 的“for/in”语句中使用。
在控制器中,我有:

@enum_Expected = Source.all

如何在我的视图中使用 @enum_Expected 作为可以在 javascirpt 中使用的数组或列表,例如:

for (var source in WantToList){
  do something with each @enum_Expected's element
}

谢谢

在“mchail”问题中完成后。
让我们看看我的结果:
我使用了:

@enum_Expected = Source.all.to_json(only: [:latitude, :latitude])

当我调试时,它的值是:
"[{\"latitude\":10.7779,\"longitude\":106.656},{\"latitude\":10.785,\"longitude\":106.663},{\"latitude \":10.7709,\"经度\":106.673}]"

当我尝试类似的事情时:

  for(var locat in enum_expected){document.write("Trying ")}

结果是:
试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试试试 试试 试试 试试 试试 试试 试试 试试 试试 试试 试试
周四,“尝试”单词的数量等于locat.length,即 137。
这不是我预期的结果。如果“尝试”单词的数量只有三个,即Source中的记录数,那就更好了。
任何意见??

4

2 回答 2

0

在您的控制器中,Source.all像这样转换为 json:

@enum_Expected = Source.all.to_json

如果您只想通过某些属性,您可以这样做:

@enum_Expected = Source.all.to_json(only: [:attr1, :attr2])

然后您可以将您的 json 直接打印到视图中(显示 erb 格式):

var enumExpected = <%= @enum_Expected %>;

然后按照您的预期enumExpected在您的循环中使用。for

更新

生成的 json 看起来很棒。它会生成一个数组,因此您需要对数组进行稍微不同的迭代。像这样:

for (var lolcatIndex = 0; lolcatIndex < enum_expected.length; lolcatIndex++) {
    var lolcat = enum_expected[lolcatIndex];
    console.log(lolcat);
}
于 2013-04-19T02:22:47.290 回答
0

您可以分配@enum_Expected为变量中的哈希数组。

<script>
  var enumExpected = <%= @enum_Expected.map(&:attributes).to_json %>
</script>

enumExpected应该是每个属性的数组@enum_Expected

于 2013-04-19T02:22:56.100 回答