【问题标题】:how to use erb to output file after binding绑定后如何使用erb输出文件
【发布时间】:2010-06-03 20:21:17
【问题描述】:

我得到了以下示例:

require 'erb' 

names = []
names.push( { 'first' => "Jack", 'last' => "Herrington" } )
names.push( { 'first' => "LoriLi", 'last' => "Herrington" } )
names.push( { 'first' => "Megan", 'last' => "Herrington" } )

myname = "John Smith"

File.open( ARGV[0] ) { |fh|

erb = ERB.new( fh.read )
print erb.result( binding )

伴随

text.txt
<% name = "Jack" %>
Hello <%= name %>


<% names.each { |name| %>
Hello <%= name[ 'first' ] %> <%= name[ 'last' ] %>
<% } %>

hi, my name is <%= myname %>

}

它很好地打印到屏幕上。

输出到另一个文件的最简单方法是什么:“text2.txt”而不是屏幕?

我知道对于大多数有经验的 Ruby 大师来说,这确实是小菜一碟,但对于我刚刚从 Novice 那里学习了一个初级 Ruby 的我来说……现在很有挑战性……但我想真正使用代码人生目标……

谢谢!!!

【问题讨论】:

    标签: ruby templates erb


    【解决方案1】:

    请注意,ERB 不会打印这个 - 你是。

    print erb.result( binding )
    

    让我们改变它。我们将打开文件句柄,以w模式写入,并将ERB结果写入文件。

    File.open('text2.txt', 'w') do |f|
      f.write erb.result(binding)
    end
    

    File.open('text2.txt', 'w')write 模式打开文件text2.txt,并将该文件对象传递到块中。 f.write 将其参数输出到文件。在某些情况下,您可能需要调用f.close 以允许您计算机上的其他进程访问该文件,但由于我们在这里使用了块表示法,因此文件会在块结束时自动关闭。

    未经测试的代码 - 如果您遇到错误,请告诉我。祝您的编码之旅好运!

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 1970-01-01
      • 2018-07-30
      • 2013-05-31
      • 2015-11-23
      • 1970-01-01
      • 2015-09-24
      • 1970-01-01
      • 2023-02-16
      相关资源
      最近更新 更多