0
以下はERBチュートリアルのコードです。私がコードを実行しようとすると、コンパイラは "(erb):16:未定義のローカル変数またはmain:Object(NameError)"のメソッド `priority 'と訴えました。私はその理由を理解できません。誰かが私を助けてくれますか?Ruby未定義ローカル変数
require "erb"
# Create template.
template = %q{
From: James Edward Gray II <[email protected]>
To: <%= to %>
Subject: Addressing Needs
<%= to[/\w+/] %>:
Just wanted to send a quick note assuring that your needs are being
addressed.
I want you to know that my team will keep working on the issues,
especially:
<%# ignore numerous minor requests -- focus on priorities %>
% priorities.each do |priority|
* <%= priority %>
% end
Thanks for your patience.
James Edward Gray II
}.gsub(/^ /, '')
message = ERB.new(template, 0, "%<>")
# Set up template data.
to = "Community Spokesman <[email protected]_community.org>"
priorities = [ "Run Ruby Quiz",
"Document Modules",
"Answer Questions on Ruby Talk" ]
# Produce result.
email = message.result
puts email
これは正しいです。Tadmanに感謝します。 –
ところでこの場合gsubは何をしていますか?テンプレート内または生成されたテキスト内を置換するか? –
これは、文字列の各行の先頭にある最初の2つの空白を削除します。これはインデントの問題を修正するようですが、実際には最適以下の解決策です。 '<<'スタイルのHEREドキュメントを使う方が良いでしょう。 – tadman