【问题标题】:Working with hashes in ruby on rails在 ruby​​ on rails 中使用哈希
【发布时间】:2012-02-18 10:13:13
【问题描述】:

如果之前已经报道过,我深表歉意;我找了又找,但没有找到答案……

我有以下哈希:

input = '{"names":[{"name":"a1","id":1},{"name":"b2","id":2}]}'

我想提取并显示这些值 - 每行一个。当我从 rails 控制台运行它时,我得到了正确的结果:

    >> r1 = ActiveSupport::JSON.decode(input)
    => {"names"=>[{"name"=>"a1", "id"=>1}, {"name"=>"b2", "id"=>2}]}
    >> r1["names"].each do |x|
    ?> puts "#{x["name"]}"
    >> end
    a1
    b2
    => [{"name"=>"a1", "id"=>1}, {"name"=>"b2", "id"=>2}]

问题是如何在我的 rails 应用程序中复制这种行为?我尝试了以下方法,但在浏览器中只返回一个值:

    module PageHelper
        def testcall()
        input = '{"names":[{"name":"a1","id":1},{"name":"b2","id":2}]}'
        r1 = ActiveSupport::JSON.decode(input)
        r1["names"].each do |a|
            return "Name: #{a["name"]}\n"
        end
   end

TIA!

【问题讨论】:

    标签: ruby hash


    【解决方案1】:

    returning 在第一个元素之后终止循环。尝试将输出附加到循环中的字符串(包括中间的换行符\n),然后在循环后返回该字符串。

    【讨论】:

    • 感谢您的协助!在将输出附加到字符串后,我还必须使用
      而不是 \n 和 simpleformat 在浏览器中正确显示它。
    【解决方案2】:

    正如@Irfy 所说,这是因为return 声明而发生的。以下代码有效,

      module PageHelper
        def testcall()
          input = '{"names":[{"name":"a1","id":1},{"name":"b2","id":2}]}'
          r1 = ActiveSupport::JSON.decode(input)
          r1["names"].map{|hash| hash["name"]}
        end
      end
    

    【讨论】:

      猜你喜欢
      • 2014-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-30
      • 2013-03-02
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多