Tour_ja

Path: docs/Tour_ja
Last Update: Thu May 19 14:22:28 +0900 2011

Amrita ツアー

HTML要素の属性を変更する

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 を参照してください。

[Validate]