ruby – 如何在命令行上将实例变量传递给HAML模板?

背景

我正在尝试测试Rails之外的一些HAML模板的格式.我们的想法是在命令行或通过包含的Ruby文件传递一些实例变量,将模板呈现为标准输出.我尝试了几种不同的方法但没有成功,如下所述.

需要Ruby文件

例如,给出以下两个文件

> HAML模板:“test.haml”

!!!
%h1 Testing HAML CLI
%p= @bar
%p= @baz

> Ruby文件:“test.rb”

@foo = 'abc'
@bar = '123'

我希望像haml -r ./test test.haml这样的调用可以在标准输出上返回插值的HTML文件,但事实并非如此.相反,我只得到HTML:

<!DOCTYPE html>
<h1>Testing HAML CLI</h1>
<p></p>
<p></p>

程序化尝试

由于这不起作用,我也尝试以编程方式执行此操作.例如:

#!/usr/bin/env ruby
require 'haml'

@foo = 'abc'
@bar = '123'

engine = Haml::Engine.new(File.read 'test.haml')
puts engine.render

具有完全相同的结果,例如只是没有变量插值的HTML.

重述问题

显然,需要其他东西来让HAML使用其关联变量呈现模板.我宁愿通过传递参数或包含文件从命令行执行此操作.我应该如何从命令行调用HAML来实现它?

如果由于某种原因这是不可能的,我应该如何以编程方式调用HAML来执行插值而不依赖于Rails?

解决方法

这两个示例都不起作用的原因是您尝试从其他类访问实例变量.最简单的解决方案是定义和使用方法,而不是尝试访问另一个类实例变量,就像它们是您自己的一样.

I.E.在test.rb中

def foo
  'abc'
end

test.haml

!!!
%h1 Testing HAML CLI
%p= foo

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...