使用ERB生成HTML文件?

bla*_*ost 3 html ruby erb

如果我有一个.html.erb看起来像这样的文件:

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <%= @name %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如何生成看起来像这样的HTML文件?

<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        John
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果格式为.html.erb并且能够获得.html文件,我该如何执行模板(传递name参数)?

7st*_*tud 9

#page.html.erb
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <%= @name %>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

...

require 'erb'

erb_file = 'page.html.erb'
html_file = File.basename(erb_file, '.erb') #=>"page.html"

erb_str = File.read(erb_file)

@name = "John"
renderer = ERB.new(erb_str)
result = renderer.result()

File.open(html_file, 'w') do |f|
  f.write(result)
end
Run Code Online (Sandbox Code Playgroud)

...

$ ruby erb_prog.rb
$ cat page.html
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        John
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

当然,为了让事情变得更有趣,您可以随时将行更改@name = "John"为:

print "Enter a name: "
@name = gets.chomp
Run Code Online (Sandbox Code Playgroud)