【问题标题】:Passing hash data to javascript将哈希数据传递给javascript
【发布时间】:2013-09-04 19:18:30
【问题描述】:

我有一个嵌套哈希,我是根据我的上一个问题 Nested group query in Rails 创建的

哈希现在是:

   {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

谢谢

【问题讨论】:

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

标签: javascript ruby-on-rails ruby activerecord hash


【解决方案1】:

没有这样的结构:

 { 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
          }
        ]
      }
     ]
   }
 ]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2020-06-14
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多