Rails在javascript中哈希,访问值

时间:2015-05-08 09:17:56

标签: javascript ruby-on-rails ruby hash

我有以下javascript代码:

<input type="hidden" name="query_form_select_ops" id="query_form_select_ops" value='<%= schema%>'  />

<script>
  function select_pk2(cell){
  var val = $('#query_form_opt_'+cell+'_1').val();
  var opts = $('#query_form_select_ops').val();  
  }
</script>

示例:

schema是典型的ruby哈希:

{ 
  "car"=>{"col"=>"blue", "engine"=>"HHd4M"},
  "train"=>{"col"=>"black", "engine"=>"8495f"}
}

变量val的值为“train”,整个ruby哈希值为opts

要访问ruby:schema [“train”]中col的{​​{1}}和engine。我怎么能在javascript中做同样的事情?
我试过了:

train

但是它告诉我未定义的var。如何在给定散列和其中一个键的javascript中访问ruby散列的值?

1 个答案:

答案 0 :(得分:1)

schema哈希转储为json,然后在javascript中将其解析回来。像这样:

<input type="hidden" name="query_form_select_ops" id="query_form_select_ops" value='<%= schema.to_json %>'  />

脚本:

function select_pk2(cell){
  var val = $('#query_form_opt_'+cell+'_1').val();
  var opts = JSON.parse($('#query_form_select_ops').val());  
}

这样您就可以按照自己的方式访问值。

示例中哈希的每个单独值都是哈希值,因此您可以使用正确的密钥访问它们。像这样:

opts['car']['col'];