File.open("db/quotes/#{id}.json", "w") do |f|
f.write <<TEMPLATE
{
"submitter": "{hash["submitter"]}",
"quote": "{hash["quote"]}",
"attribution": "{hash["attribution"]}"
}
TEMPLATE
end
我明白这个方法在做什么。我从一本书中读到了这段代码。它试图将json写入一个名为#{id} .json的文件。我以前从未见过它。是“&lt;&lt;”一个运营商?什么是“模板”?顺便说一句,这本书在轨道上重建红宝石。在重建模型层的部分是我找到代码片段的地方。它可能与Gem“erubis”有关。
答案 0 :(得分:3)
f.write
需要一个字符串作为参数,并将该字符串写入文件f
。
<<TEMPLATE
启动一个字符串,该字符串在下一次出现TEMPLATE
时结束。这种字符串称为heredocs。
答案 1 :(得分:2)
字符串的here-document
语法。这是一种表示跨越多行的字符串的方法,并且将保留缩进。
str = <<EOF
this will be the content
of your string
EOF
你可以在我放EOF的地方选择你想要的任何单词。
答案 2 :(得分:1)
其他答案指出了heredocs的正确方向。
从技术上讲,这是语法错误,字符串永不终止。
begin
str = <<EOS
This is my string
EOS
end
因为EOS
位于该行的开头。以下示例有效:
begin
str = <<EOS
This is my string
EOS
end
要正确缩进代码,您可以执行以下操作:
begin
str = <<-EOS
This is my string
EOS
end