使用命令行创建静态 html 的 ERB 部分
ERB partials to create static html with command line
我正在尝试制作一个非常基本的 ERB,以从多个较小的 html 文件制作一个 html 文件。我读到我可以使用
<%= h(render "filename") %>
将名为 _filename.html.erb 的内容文件添加到文档中。当我尝试使用
在命令行中生成文件时
erb test.html.erb > new-test.html
得到错误
test.html.erb:9:in `<main>': undefined method `render' for main:Object (NoMethodError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:849:in `eval'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:849:in `result'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:831:in `run'
from /usr/bin/erb:133:in `run'
from /usr/bin/erb:154:in `<main>'
我是不是做错了什么,还是我需要 运行 将其作为 Web 应用才能 "render" 正常工作?
test.html.erb代码参考:
<html lang="en">
<body>
<%= h(render "me") %>
</body>
</html>
这个脚本怎么样:
require 'erb'
def render(filename)
ERB.new(File.read "#{filename}.html.erb").result(binding)
end
File.open('new-test.html', 'w') do |file|
file.write render('test')
end
它将读取您的 test.html.erb,正确插入 ruby 代码,包括对我们的自定义渲染的调用(因此不需要任何外部库来处理),并输出 new-test.html 文件。您可以通过以下方式运行:
ruby script_name.rb
注意我们需要如何向 ERB 提供绑定对象。它定义了模板中内插 ruby 的评估上下文。这里我们提供了脚本本身的绑定,这就是为什么我们可以访问 erb 模板中的 render 方法。
我正在尝试制作一个非常基本的 ERB,以从多个较小的 html 文件制作一个 html 文件。我读到我可以使用
<%= h(render "filename") %>
将名为 _filename.html.erb 的内容文件添加到文档中。当我尝试使用
在命令行中生成文件时erb test.html.erb > new-test.html
得到错误
test.html.erb:9:in `<main>': undefined method `render' for main:Object (NoMethodError)
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:849:in `eval'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:849:in `result'
from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/erb.rb:831:in `run'
from /usr/bin/erb:133:in `run'
from /usr/bin/erb:154:in `<main>'
我是不是做错了什么,还是我需要 运行 将其作为 Web 应用才能 "render" 正常工作?
test.html.erb代码参考:
<html lang="en">
<body>
<%= h(render "me") %>
</body>
</html>
这个脚本怎么样:
require 'erb'
def render(filename)
ERB.new(File.read "#{filename}.html.erb").result(binding)
end
File.open('new-test.html', 'w') do |file|
file.write render('test')
end
它将读取您的 test.html.erb,正确插入 ruby 代码,包括对我们的自定义渲染的调用(因此不需要任何外部库来处理),并输出 new-test.html 文件。您可以通过以下方式运行:
ruby script_name.rb
注意我们需要如何向 ERB 提供绑定对象。它定义了模板中内插 ruby 的评估上下文。这里我们提供了脚本本身的绑定,这就是为什么我们可以访问 erb 模板中的 render 方法。