| Path: | docs/Tour_ja |
| Last Update: | Wed Nov 06 15:02:26 JST 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 を参照してください。