【问题标题】:Learning Ruby ERB Templates学习 Ruby ERB 模板
【发布时间】:2016-10-24 07:17:46
【问题描述】:

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

我在“非常简单的示例”部分,代码如下:

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 命令?任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 如果在变量中添加@符号会怎样:@weekday
  • 我会尝试并报告给你!
  • @LukaszMuzyka 我这样做了,错误消失了,但生成的文件仍然不正确。错误如下: require 'erb' weekday = Time.now.strftime('%A') simple_template = "Today is ." renderer = ERB.new(simple_template) puts output = renderer.result()
  • 它似乎做了直接翻译而不是过滤。

标签: ruby ruby-on-rails-3 templates erb


【解决方案1】:

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

puts output = renderer.result(binding)

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

【讨论】:

    【解决方案2】:

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

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

    erb 命令需要传递一个 erb 模板文件,而不是一段 ruby​​ 代码。它将所有 ruby​​ 代码视为纯文本,只有插入代码 &lt;%= weekday %&gt; 需要被解释为 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的输出:

    需要'erb'

    weekday = Time.now.strftime('%A') simple_template = "今天是 2016-10-24 08:40:41 +0100。”

    renderer = ERB.new(simple_template)

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

    现在看看ruby testing.html.erb的输出

    今天是 2016-10-24 08:42:16 +0100。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-21
      • 1970-01-01
      • 2010-09-14
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      相关资源
      最近更新 更多