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