相关疑难解决方法(0)

使用散列值渲染ERB模板

我必须忽略一些非常简单的东西,但我似乎无法弄清楚如何使用哈希映射的值渲染一个简单的ERB模板.

来自python的我对ruby比较新.我有一个ERB模板(不是HTML),我需要使用从哈希映射中获取的上下文来渲染,我从外部源接收.

但是,ERB的文档说明该ERB.result方法需要一个binding.我才知道,他们是保持着可变背景的红宝石东西(像locals()globals()在python,我相信?).但是,我不知道如何从哈希映射中构建绑定对象.

一点点(很多,实际上)谷歌搜索给了我这个:http://refactormycode.com/codes/281-given-a-hash-of-variables-render-an-erb-template,它使用了一些红宝石元编程魔法逃避我

那么,这个问题不是一个简单的解决方案吗?或者是否有更好的模板引擎(不依赖于HTML)更适合这种情况?(我只选择了ERB,因为它在stdlib中).

ruby template-engine erb

57
推荐指数
6
解决办法
4万
查看次数

使用OpenBtruct和ERB时出现问题

编辑:忘了包含我的环境信息... Win7x64,RubyInstaller Ruby v1.9.1-p378

编辑2:刚刚更新到v1.9.1,补丁429,仍然得到同样的错误.

编辑3:在Ruby v1.8.7,补丁249中运行相同的代码,工作正常.所以它的v1.9.1明显打破了它.

我是新手使用ERB,我能找到的样品......嗯......不太有帮助......和ERB玩了大约一个小时,我得到了一些基本的例子(最后),但我有不明白为什么这不起作用......

require 'ostruct'
require 'erb'

data = {:bar => "bar"}
vars = OpenStruct.new(data)

template = "foo "
erb = ERB.new(template)

vars_binding = vars.send(:binding)
puts erb.result(vars_binding)
Run Code Online (Sandbox Code Playgroud)

此代码生成以下错误:

irb(main):007:0> puts erb.result(vars_binding)
NameError: undefined local variable or method `bar' for main:Object
        from (erb):1
        from C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `eval'
        from C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `result'
        from (irb):7
        from C:/Ruby/v1.9.1/bin/irb:12:in `'

为什么要看main:Object绑定?我告诉它通过传入来使用OpenStruct的绑定vars_binding

有人可以告诉我为什么它不起作用,并帮助我让它工作?

ruby binding erb nameerror

15
推荐指数
2
解决办法
4145
查看次数

使用ERB生成HTML文件?

如果我有一个.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参数)?

html ruby erb

3
推荐指数
1
解决办法
6142
查看次数

标签 统计

erb ×3

ruby ×3

binding ×1

html ×1

nameerror ×1

template-engine ×1