Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ERB部分使用命令行创建静态html_Html_Ruby On Rails_Ruby_Erb - Fatal编程技术网

ERB部分使用命令行创建静态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

我正在尝试制作一个非常基本的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/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渲染到新文件所需的代码。。。或者看看这个: