如何在Rails上的Ruby中正确显示JSON记录

时间:2019-04-23 23:04:11

标签: ruby-on-rails

我有以下json数据

[{
            "id": 2332860,
            "name": "NAME 1",
            "capping": [{
                "quantity": 1,
                 "rule":[{"frequency": 'bad' }]
            }]
},

{
            "id": 77777,
            "name": "NAME 2",
            "capping": [{
                "quantity": 2,
                 "rule":[{"frequency": 'good' }]

            }]
}]

这是我首先通过api响应检索 id和名称数据的方法,按照下面的代码,一切都可以正常工作

obj=JSON.parse(response)
print(obj)

obj.each do |val|
  id, name = val['id'], val['name']

  puts "ID:   #{id}"
  puts "Name: #{name}"

end

这是视图的外观

<ul>
  <% obj.each do |val| %>
    <li><%= val['id'] %> - <%= val['name'] %></li>
  <% end %>
</ul>

目前正在努力实现的目标:

现在,我想从上限访问数量,从规则访问频率。为此,我在下面实现了此代码,但得到了 错误的未定义局部变量或方法上限

obj=JSON.parse(response)
print(obj)

obj.each do |val|
  id, name = val['id'], val['name']

  puts "ID:   #{id}"
  puts "Name: #{name}"

#get quqntity
  val.capping.each do |cap|
    quantity = cap['quantity']

    puts "QTY:   #{quantity}"

      #get frequency
      cap.rule.each do |r|
        frequency = r['frequency']

        puts "FRQ:   #{frequency}"


     end


  end

end

关于为什么会出现上述错误的任何想法都可以帮助我解决该问题

1 个答案:

答案 0 :(得分:0)

您需要像访问cappingid一样访问name。 Ruby认为val.capping是一种方法。尝试使用此:

val[:capping]

val['capping']