我有以下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散列的值?
答案 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'];