Ruby中ERB模板的使用

Ruby读取XML使用REXML没话说,方便快捷,但Ruby创建XML呢?

工作上需要使用程序根据规则自动生成一个XML数据文件,准备用Ruby实现,上网查了一些Ruby创建XML文档的介绍,10篇有9篇都是转载那一个文章,使用Builder::XmlMarkup操作,但文章介绍的也太简单了,琢磨半天也没想明白怎么制作稍微复杂一点点的嵌套结构;

如果这个工作用Java实现,不用考虑,自然FreeMarker参上,用模板写XML避免操作复杂的Dom,Element的,懒人的福音啊!我记得原来看过Ruby也有模板的功能,叫啥名忘了,Google吧,发现要找的就是ERB(ERb)

ERB全称是啥没找到,标准库文档中介绍 [color=blue]ERB provides an easy to use but powerful templating system for Ruby[/color];看介绍Ruby On Rails就是使用ERB作为创建文件的模板;但是,网上关于Ruby ERB也退少了(难道因为太简单?不用介绍??),自己收集了一些,留下备用,也给有此需求的朋友留个参考

ERB属于Ruby标准库中的东西,不需要单独安装,模板中动态脚本的写法和JSP基本一个模子扒出来的
[color=darkred]<%[/color] [color=green]写逻辑脚本(Ruby语法)[/color] [color=darkred]%>[/color]
[color=darkred]<%=[/color] [color=green]直接输出变量值或运算结果[/color] [color=darkred]%>[/color]


给一段示例代码,这段代码是从Hash中读取信息创建sql语句保存到文件中

require "erb"
domains = {...}
sqlTemplate = ERB.new %q{
<%for organization in domains.keys%>
insert into org_domain(Domain, organization) values('<%=domains[organization]%>','<%=organization%>');
<%end%>
}
sqlFile = File.new("./sql.sql", "w")
sqlFile.puts sqlTemplate.result


[color=indigo]
补充一点,关于模板输出结果可以使用
template.result
template.result(binding)

* 两个方法还是有细微差别的,无参数那种直接使用当前代码段中的上下文环境,对于直接写一些简单测试脚本完全够用
* 当ERB方法要运行在类内的方法,或者访问类内变量时,必须明确调用 .result(binding) 与上下文变量绑定,否则ERB模板无法直接访问到类变量
[/color]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值