我是ruby的新手,并且正在尝试创建一个简单的函数来获取文件并用数组替换所有的胡子。例如:
<p>Hello {{person_name}}</p>
<p>{{welcome_msg}}</p>
我想用一组键和值来改变它。
class Template
attr_accessor :file_name
def parse_template (array_to_replace)
str = File.read(file_name)
array_to_replace.each do |item|
# required code here ...
end
return str
end
end
任何人都可以输入所需的代码???
我不知道多维数组如何在ruby中工作,但我想要的是:
the_arr = Array(
:person_name => "John Doe",
:welcome_msg => "Hello friend"
)
object = Template.new
object.file_name = "simple.tpl"
output = object.parse_template(the_arr);
puts output
<p>Hello John Doe</p>
<p>Hello friend</p>
答案 0 :(得分:2)
您可以使用the mustache
gem:
require 'mustache'
attributes = {
:person_name => "John Doe",
:welcome_msg => "Hello friend"
}
template = File.read('simple.tpl')
output = Mustache.render(template, attributes)
puts output
# <p>Hello John Doe</p>
# <p>Hello friend</p>
答案 1 :(得分:2)
您可能对Ruby内置的内容感兴趣。
string = '<p>Hello %{person_name}</p>
<p>%{welcome_msg}</p>'
attributes = {
:person_name => "John Doe",
:welcome_msg => "Hello friend"
}
puts string % attributes
输出:
<p>Hello John Doe</p>
<p>Hello friend</p>
说明:
String class定义了一个名为%
的方法(是的,在Ruby中,您可以在方法名称中包含非字母数字字符)。这样可以使用散列值来模板样式替换%{key}
。它也可以格式化数字和字符串;有关详细信息,请参阅documentation of the %
method。