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全稱是啥沒找到,標準庫文檔中介紹 ERB provides an easy to use but powerful templating system for Ruby;看介紹Ruby On Rails就是使用ERB作爲創建文件的模板;但是,網上關於Ruby ERB也退少了(難道因爲太簡單?不用介紹??),自己收集了一些,留下備用,也給有此需求的朋友留個參考

   ERB屬於Ruby標準庫中的東西,不需要單獨安裝,模板中動態腳本的寫法和JSP基本一個模子扒出來的
<%寫邏輯腳本(Ruby語法)%>
<%=直接輸出變量值或運算結果%>


給一段示例代碼,這段代碼是從Hash中讀取信息創建sql語句保存到文件中

Ruby代碼  收藏代碼
  1. require "erb"

  2. domains = {...}  

  3. sqlTemplate = ERB.new %q{  

  4. <%for organization in domains.keys%>  

  5.    insert into org_domain(Domain, organization) values('<%=domains[organization]%>','<%=organization%>');  

  6. <%end%>  

  7. }  

  8. sqlFile = File.new("./sql.sql", "w")  

  9. sqlFile.puts sqlTemplate.result  




補充一點,關於模板輸出結果可以使用
template.result
template.result(binding)

* 兩個方法還是有細微差別的,無參數那種直接使用當前代碼段中的上下文環境,對於直接寫一些簡單測試腳本完全夠用
* 當ERB方法要運行在類內的方法,或者訪問類內變量時,必須明確調用 .result(binding) 與上下文變量綁定,否則ERB模板無法直接訪問到類變量


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章