【问题标题】:For loop inside <<-eos Ruby<<-eos Ruby中的for循环
【发布时间】:2014-05-30 09:36:29
【问题描述】:

我是 Ruby 语言的新手。我正在尝试用 ruby​​ 编写一个 json 文件,然后将其导入到 Mongodb 集合中。我需要文档保持适当的缩进,然后才能舒适地填充它

目前,我正在这样做,但我确定这不是推荐的方式

    out_file = File.new('file.json', "w+")
    str = <<-eos
    {
        "key1": #{@value1},
        "key2" :  #{@value2},
        "key3" : {
            "subkey_3_1" : {
                "key" : #{@value},
                "questions" : #{@invalid_questions}
            },
            "subkey_3_2" : {
                "key" : #{value},
                "array_key" : [
                   for i in 1..50
                     # Here, must be create 50 hash pair-value like this. 
                    {},
                    {},
                    {},
                    ...
                    end
                ] 
            }
        }
    }
    eos

    out_file.puts(str)
    out_file.close

这是我想要的最终结构。谢谢,很抱歉没有从一开始就解释清楚

如何在 ruby​​ 中定义它?

【问题讨论】:

  • 但是你可以先创建一个Hash然后使用out_file.puts(hash.to_json).. 很简单。看这个example
  • 谢谢! to_json 函数有效!

标签: ruby string loops for-loop


【解决方案1】:
str = <<-eos    
"key" : [
    #{for i in 1..50 {
          ...something content...
         }.join("\n") }              
] 
eos

但是 - 为什么你想要一个字符串 - 我不知道你想要做什么,但必须有更好的方法。

更新:

是的,正如@ArupRakshit 所提到的,您需要先创建哈希并在其上调用to_json。如果您没有此方法,则需要安装名为 active_support 的 gem 并需要 'active_support/core_ext'(对于 rails 应用程序无需这样做)。不要手动构建 json 响应。

【讨论】:

  • 对不起,刚刚更新了问题,让你更好地理解它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
相关资源
最近更新 更多