12

私は次の例を得ました:

require 'erb' 

names = []
names.push( { 'first' => "Jack", 'last' => "Herrington" } )
names.push( { 'first' => "LoriLi", 'last' => "Herrington" } )
names.push( { 'first' => "Megan", 'last' => "Herrington" } )

myname = "John Smith"

File.open( ARGV[0] ) { |fh|

erb = ERB.new( fh.read )
print erb.result( binding )

を伴う

text.txt
<% name = "Jack" %>
Hello <%= name %>


<% names.each { |name| %>
Hello <%= name[ 'first' ] %> <%= name[ 'last' ] %>
<% } %>

hi, my name is <%= myname %>

}

画面にうまく印刷されます。

画面ではなく「text2.txt」という別のファイルに出力する最も簡単な方法は何ですか?

これは、経験豊富なルビーマスターのほとんどにとって本当に簡単なことですが、初心者からBeginning Rubyを選んだばかりの私にとっては、今は難しいですが、実際の目的でコードを使用したいと思います。 ..

ありがとうございました!!!

4

1 に答える 1

24

ERBはこれを印刷していないことに注意してください-あなたはそうです。

print erb.result( binding )

それを変えましょう。書き込みモードでファイルハンドルを開き、wERB結果をファイルに書き込みます。

File.open('text2.txt', 'w') do |f|
  f.write erb.result(binding)
end

File.open('text2.txt', 'w')text2.txtライトモードでファイルを開き、wそのファイルオブジェクトをブロックに渡します。f.writeその引数をファイルに出力します。場合によってはf.close、コンピューター上の他のプロセスがファイルにアクセスできるようにするために呼び出す必要がありますが、ここでは代わりにブロック表記を使用したため、ファイルはブロックの最後で自動的に閉じられます。

コードはテストされていません-エラーが発生した場合はお知らせください。コーディングの旅に頑張ってください!

于 2010-06-03T20:34:16.797 に答える