将散列数据传递给javascript

将散列数据传递给javascript,javascript,ruby-on-rails,ruby,activerecord,hash,Javascript,Ruby On Rails,Ruby,Activerecord,Hash,我有一个嵌套的散列,我是根据我以前的一个问题创建的 哈希现在是: {14=>{11=>{21=>7, 22=>8}, 4=>{21=>7, 22=>4}}, 16=>{5=>{25=>2, 26=>1}, 11=>{26=>2, 25=>5}} } 我想将这些数据传递给javascript,我认为最好为每个属性/模型指定键名,如下所示: { question_id: 14=>{ club_id

我有一个嵌套的散列,我是根据我以前的一个问题创建的

哈希现在是:

   {14=>{11=>{21=>7, 22=>8}, 4=>{21=>7, 22=>4}}, 16=>{5=>{25=>2, 26=>1}, 11=>{26=>2, 25=>5}} }
我想将这些数据传递给javascript,我认为最好为每个属性/模型指定键名,如下所示:

   { question_id: 14=>{ club_id: 11=>{ choice_id: 21=>7, choice_id: 22=>8} etc etc}
我的问题是,这是将Rails中的数据传递给Javascript的最佳实践,还是从控制器的json变量传递数据更好

如果我尝试的方法很好,那么有没有办法将散列中的键名设置为初始查询中的属性名

Answer.where(:question_id => 14).group(:club_id, :choice_id).count

谢谢

没有这样的结构:

 { question_id: 14 => { club_id: 11 => { choice_id: 21 => 7, choice_id: 22 => 8 }
您试图将哈希值与其他值关联,这是一个无效的结构。实现数据语义结构(即反映计数和id之间实际关系的结构)的一种方法是通过
JSON
将数据传递给浏览器,如下所示:

{ questions: [
  { 
    id: 14,
    clubs: [
      {
        id: 11,
        choices: [
          {
            id: 21,
            count: 7
          },
          {
            id: 22,
            count: 8
          }
        ]
      }
     ]
   }
 ]
}

第二个代码段中的语法无效。没有最佳实践。如何将其发送到客户端取决于您的应用程序。如果生成页面时数据可用,则可以将其与页面的其余部分一起发出。如果您使用的是ajax,并且它当时是可用的,那么就使用ajax。为什么会被否决?谢谢akonsu,生成页面时数据将不可用。我想我将通过json传递它,因为我使用的js框架可以处理这个问题。您知道是否可以在我的应用程序中添加属性名作为键?