HTMLにRubyを埋め込むには、WordPressと似ているなと思いました。
<%~~~%>
のように<%と%>で囲った部分にRubyのコードを記述することができる。
Rubyの変数を表示するには<%=と%>で囲ってあげればよい。実行の場合はイコールが要らなくて、表示するにはイコールが必要、と覚えておこう。
ERBというRubyのライブラリを使うことで簡単に埋め込みができる。
まずはtest.rbという空のファイルを作成し、
require 'erb'
としてerbを読み込んでおく必要がある。
def web_page &lt;&lt;-HOGE &lt;!DOCTYPE html&gt; &lt;html lang=&quot;ja&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;タイトル&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% aiueo='晴れ' %&gt; &lt;p&gt;今日は&lt;%= aiueo %&gt;&lt;/p&gt; &lt;/body&gt; &lt;/html&gt; HOGE end
このようにメソッドを定義しておいて、
<<- HOGE
と
HOGE
の間に改行を含むHTML文を入れていく。HOGEの文字はなんでも良い。
この<<- HOGE で囲った部分はヒアドキュメントと呼ぶ。
&lt;% aiueo='晴れ' %&gt;
の行で変数aiueoに晴れという文字列を代入し、
&lt;%= aiueo %&gt;
の部分で、aiueo変数を表示している。
代入と表示の仕方はこれで覚えることが出来た。
引き続き上で定義したweb_pageというメソッドを叩いてみよう。
puts web_page
とやってターミナル上でruby test.rb で実行してみると以下のような表示が出てくれる。
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;ja&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;タイトル&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;% aiueo='晴れ' %&gt; &lt;p&gt;今日は&lt;%= aiueo %&gt;&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;
これらがそのまま表示される。メソッドを実行すると最後のオブジェクトがreturnされるのがRubyの仕様だ。
つまり最後のオブジェクトというのはヒアドキュメントの事で、つまり文字列のこと。
で、このERB形式のHTMLの文字列を引数にERBオブジェクトを生成する。
そのためにはweb_pageのメソッドを渡してあげるだけでよく、
erb = ERB.new(web_page)
これで文字列が渡るのでOK。
erbインスタンスのresultメソッドを叩いてみると。
result = erb.result
これでERBオブジェクト内のRubyが実行されて、その結果が埋め込まれて返り値となる。
puts result
で表示してあげれば、
&lt;!DOCTYPE html&gt; &lt;html lang=&quot;ja&quot;&gt; &lt;head&gt; &lt;meta charset=&quot;UTF-8&quot;&gt; &lt;title&gt;タイトル&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;p&gt;今日は晴れ&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;
という結果が得られる。
ここまではRubyファイルを作成して、ターミナル上でのみ実行結果を確認している。
これからは実際にWEBサーバーと連携して、Rubyを裏で動かしてブラウザに表示するようなのをやっていきます。