Path: | docs/Tour_ja |
Last Update: | Wed Nov 06 06:02:26 +0000 2002 |
href="…" のような属性の値を変更する方法を説明します。
コード:
require "amrita/template" include Amrita tmpl = TemplateText.new <<END <table border="1"> <tr><th>name</th><th>author</th><th>webpage</tr> <tr id=table1> <td id="name"></td> <td id="author"></td> <td><a id="webpage"></a></td> </tr> </table> END data = { :table1=>[ { :name=>"Ruby", :author=>"matz" , :webpage=> a(:href=>"http://www.ruby-lang.org/") { "Ruby Home Page" }, }, { :name=>"perl", :author=>"Larry Wall" , :webpage=> a(:href=>"http://www.perl.com/") { "Perl.com" }, }, { :name=>"python", :author=>"Guido van Rossum" , :webpage=> a(:href=>"http://www.python.org/") { "Python Language Website" }, }, ] } tmpl.prettyprint = true #tmpl.use_compiler = true tmpl.expand(STDOUT, data)
出力:
<table border="1"> <tr> <th>name</th> <th>author</th> <th>webpage</th> </tr> <tr> <td>Ruby</td> <td>matz</td> <td><a href="http://www.ruby-lang.org/">Ruby Home Page</a></td> </tr> <tr> <td>perl</td> <td>Larry Wall</td> <td><a href="http://www.perl.com/">Perl.com</a></td> </tr> <tr> <td>python</td> <td>Guido van Rossum</td> <td><a href="http://www.python.org/">Python Language Website</a></td> </tr> </table>
Amrita#a() というメソッドは Amrita::AttrArray という特別なオブジェクトを生成します。
a(:href=>"http://www.ruby-lang.org/") { "Ruby Home Page" },
このオブジェクトをモデルデータとして使用すると、HTML要素の属性が変更されます。 例えば、次のようなテンプレートにこのデータを与えたとすると
<td><a id="webpage"></a></td>
出力は次のようになります。
<td><a href="http://www.ruby-lang.org/">Ruby Home Page</a></td>
docs/XML_ja で説明している filelist.rb というサンプルもAttrArrayを使用しています。
なお、属性の展開は別の方法もあります。詳しくは docs/Tour2の expand_attr を参照してください。