繁体   English   中英

通过js中的Rails控制器遍历哈希

[英]Iterate through a hash from the Rails controller in js

在我的rails控制器中,我做了一个哈希,看起来像这样:

@data = {

 term => {        
   node_id => {
    :name,
    :matchcode,
    :credits,
    :parts => [{
      :mp_id,
      :matchcode,
      :nr,
      :selected
    }]

}}

现在,我想通过此哈希在js中进行迭代以获取键和值。 首先,我需要一个术语,我试图用类似的东西来理解它:

for(var s in '#{@data}') {
   console.log(s);
}

但是我好像做错了什么,这是我第一次使用rails ..

从服务器端红宝石控制器向客户端javascript代码传递数据并不是那么简单。 首先,javascript不了解ruby变量,上面只是字符串'#{data}'对其进行求值。

有两种传递此类数据的方法:

首先,您可以在DOM元素服务器端设置html属性,然后在javascript中读取它。 这对于传递字符串或数字而言,对于散列而言可能是最简单的解决方案,但是它很杂乱,因为您需要将其转换为javascipt可以理解的形式-转换为JSON。 即使这样做很简单,也只会增加额外的复杂性,而且很脏。

第二个选择是gon宝石。 它为您提供了一个对象,您可以在控制器中分配数据。 然后,它处理所有转换,您可以访问javascript中的所有数据:

# controller
gon.my_data = {a: 1}

#js
gon.myData  #=> {"a": 1}

该解决方案非常简单,但是仍然有点脏。

最终,最简洁,更复杂的解决方案是使用AJAX-您的JavaScript向服务器发出请求以接收数据。 在许多情况下可能是过大的杀伤力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM