Ниже приведен код из учебника ERB. Когда я пытался выполнить код, компилятор жаловался на высказывание «(erb): 16: неопределенная локальная переменная или метод« priority »для main: Object (NameError)». Я не могу понять причину. Может кто-нибудь, пожалуйста, помогите мне?Ruby Undefined Локальная переменная
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 в этом случае? заменить в шаблоне или сгенерированном тексте? –
Удаляет первые два пробела в начале каждой строки строки. Это, похоже, устраняет проблему с отступом, но на самом деле является субоптимальным решением. Лучше использовать '<<' -style HERE doc. – tadman