`
lj6684
  • 浏览: 953825 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

Ruby中ERB模板的使用

    博客分类:
  • Ruby
阅读更多
Ruby读取XML使用REXML没话说,方便快捷,但Ruby创建XML呢?

    工作上需要使用程序根据规则自动生成一个XML数据文件,准备用Ruby实现,上网查了一些Ruby创建XML文档的介绍,10篇有9篇都是转载那一个文章,使用Builder::XmlMarkup操作,但文章介绍的也太简单了,琢磨半天也没想明白怎么制作稍微复杂一点点的嵌套结构;
 
    如果这个工作用Java实现,不用考虑,自然FreeMarker参上,用模板写XML避免操作复杂的Dom,Element的,懒人的福音啊!我记得原来看过Ruby也有模板的功能,叫啥名忘了,Google吧,发现要找的就是ERB(ERb)

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

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


给一段示例代码,这段代码是从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



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

* 两个方法还是有细微差别的,无参数那种直接使用当前代码段中的上下文环境,对于直接写一些简单测试脚本完全够用
* 当ERB方法要运行在类内的方法,或者访问类内变量时,必须明确调用 .result(binding) 与上下文变量绑定,否则ERB模板无法直接访问到类变量

  • erb.rar (4.8 KB)
  • 描述: code
  • 下载次数: 73
分享到:
评论
2 楼 lord_is_layuping 2015-12-02  
ERB全称是啥没找到
1 楼 xu_ch 2009-06-21  
 

相关推荐

Global site tag (gtag.js) - Google Analytics