[英]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.