创建“A”对象时,如何将模板名称作为字符串传递。如果我使用以下代码执行此操作,它将被写入模板的名称而不是它的表示形式。
template1 = "Today is <%= @weekday %>."
template2 = "Tomorow is <%= @weekday %>."
template3 = "Yesterday was <%= @weekday %>."
class A
include ERB::Util
def initialize template, day
@template = template
@weekday = day
end
def render()
ERB.new(@template).result
#ERB.new(@template).result(binding)
end
def save(file)
File.open(file, "w+") do |f|
f.write(render)
end
end
end
day = Time.now.strftime('%A')
#name of template from outside source as a string
template_to_use = 'template3'
list = A.new template_to_use, day
list.save 'list.txt'
如果我将表达式更改为template_to_use = template3
(删除引号)代码工作正常并且文件根据模板正确生成,但这里的问题是我将从 yml 定义中接收这个值,并且这个值将作为一个字符串出现。
所以我需要以某种方式将此字符串用作方法名称。但我不知道我该怎么做。对于此类问题的任何帮助或更好的方法将不胜感激。