学习 Ruby 个 ERB 模板

Learning Ruby ERB Templates

我正在尝试使用以下指南学习 Ruby ERB 模板: Tutorial Link

我在 "very simple example" 部分,代码如下:

require 'erb'

weekday = Time.now.strftime('%A')
simple_template = "Today is <%= weekday %>."

renderer = ERB.new(simple_template)
puts output = renderer.result()

我想 运行 此代码生成一个 html 文件,所以我创建了一个名为

的文件
testing.html.erb

和 运行 使用以下命令的代码:

erb testing.html.erb > new-file.html

当我通过终端执行此操作时,弹出了几个错误,生成的 html 文件为空白。以下是我收到的错误:

我希望有人能告诉我我做错了什么。我忘记了什么吗?还是我没有正确 运行 执行 erb 命令?任何帮助将不胜感激。谢谢!

如果您将代码传递给 ruby,代码将 运行。那就是用这个启动它:

ruby testing.html.erb > new-file.html

erb 命令需要传递一个 erb 模板文件而不是一段 ruby 代码。它将所有 ruby 代码视为纯文本,只有插入代码 <%= weekday %> 需要被解释为 ruby 代码。所以它试图插入 weekday - 但由于尚未定义,它失败了。

试试这个,我想你可能会看到发生了什么:

将文件内容'testing.html.erb'更改为:

require 'erb'

weekday = Time.now.strftime('%A')
simple_template = "Today is <%= Time.now %>."

renderer = ERB.new(simple_template)
puts output = renderer.result()

然后看erb testing.html.erb的输出:

require 'erb'

weekday = Time.now.strftime('%A') simple_template = "Today is 2016-10-24 08:40:41 +0100."

renderer = ERB.new(simple_template)

请注意,整个文件 'testing.html.erb' 都是模板。

现在看看ruby testing.html.erb

的输出

Today is 2016-10-24 08:42:16 +0100.

这里的模板就是变量的内容simple_template

如果您将绑定发送到结果方法,您的代码将起作用。

puts output = renderer.result(binding)

关于绑定的更多信息:Ruby’s Binding Class (binding objects)