ERB部分使用命令行创建静态html
我正在尝试制作一个非常基本的ERB,从多个较小的html文件中生成一个html文件。我读到我可以用ERB部分使用命令行创建静态html,html,ruby-on-rails,ruby,erb,Html,Ruby On Rails,Ruby,Erb,我正在尝试制作一个非常基本的ERB,从多个较小的html文件中生成一个html文件。我读到我可以用 <%= h(render "filename") %> 它得到了错误 test.html.erb:9:in `<main>': undefined method `render' for main:Object (NoMethodError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/u
<%= h(render "filename") %>
它得到了错误
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>'
test.html.erb:9:in`:main:Object(NoMethodError)的未定义方法“render”
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:处于“运行”状态
from/usr/bin/erb:154:in`'
我是做错了什么,还是需要将其作为web应用程序运行才能“渲染”工作
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代码,包括对自定义呈现的调用(因此不需要任何外部库来处理),并输出一个新的-test.html文件。您可以通过以下方式运行它:
ruby script_name.rb
请注意,我们需要如何向ERB提供绑定对象。它定义了模板中插值ruby的计算上下文。这里我们提供了脚本本身的绑定,这就是为什么我们可以访问erb模板内部的render方法。这个脚本怎么样:
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代码,包括对自定义呈现的调用(因此不需要任何外部库来处理),并输出一个新的-test.html文件。您可以通过以下方式运行它:
ruby script_name.rb
请注意,我们需要如何向ERB提供绑定对象。它定义了模板中插值ruby的计算上下文。这里我们提供了脚本本身的绑定,这就是为什么我们可以访问erb模板中的render方法。
render
需要ActionView::PartialRenderer:。为了包含这一点,您应该编写一个包含该包的ruby脚本。我不确定这是否能完全解决您的问题,但应该让您开始。好吧,我对ruby非常陌生,那么我将如何包含该软件包?我将花一个小时学习如何运行ruby脚本以及如何在其中包含软件包(“gems”)。基本上,您将拥有一个run.rb
文件,该文件顶部有require
语句,其中一个语句将需要erb
。在该文件中,您将编写将erb渲染到新文件所需的代码。。。或者检查以下内容:render
需要ActionView::PartialRenderer:。为了包含这一点,您应该编写一个包含该包的ruby脚本。我不确定这是否能完全解决您的问题,但应该让您开始。好吧,我对ruby非常陌生,那么我将如何包含该软件包?我将花一个小时学习如何运行ruby脚本以及如何在其中包含软件包(“gems”)。基本上,您将拥有一个run.rb
文件,该文件顶部有require
语句,其中一个语句将需要erb
。在该文件中,您将编写将erb渲染到新文件所需的代码。。。或者看看这个: