2024年11月のおすすめスクール

【Ruby】HTMLに埋め込んでみる&メソッドの返り値は何?

  • URLをコピーしました!

HTMLにRubyを埋め込むには、WordPressと似ているなと思いました。

<%~~~%>

のように<%と%>で囲った部分にRubyのコードを記述することができる。

Rubyの変数を表示するには<%=と%>で囲ってあげればよい。実行の場合はイコールが要らなくて、表示するにはイコールが必要、と覚えておこう。

ERBというRubyのライブラリを使うことで簡単に埋め込みができる。

まずはtest.rbという空のファイルを作成し、

require 'erb'

としてerbを読み込んでおく必要がある。

def web_page
  &amp;lt;&amp;lt;-HOGE
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;ja&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;タイトル&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;% aiueo='晴れ' %&amp;gt;
    &amp;lt;p&amp;gt;今日は&amp;lt;%= aiueo %&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
  HOGE
end

このようにメソッドを定義しておいて、
<<- HOGE

HOGE

の間に改行を含むHTML文を入れていく。HOGEの文字はなんでも良い。

この<<- HOGE で囲った部分はヒアドキュメントと呼ぶ。

&amp;lt;% aiueo='晴れ' %&amp;gt;


の行で変数aiueoに晴れという文字列を代入し、

&amp;lt;%= aiueo %&amp;gt;


の部分で、aiueo変数を表示している。

代入と表示の仕方はこれで覚えることが出来た。

引き続き上で定義したweb_pageというメソッドを叩いてみよう。

puts web_page

とやってターミナル上でruby test.rb で実行してみると以下のような表示が出てくれる。

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;ja&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;タイトル&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;% aiueo='晴れ' %&amp;gt;
    &amp;lt;p&amp;gt;今日は&amp;lt;%= aiueo %&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

これらがそのまま表示される。メソッドを実行すると最後のオブジェクトがreturnされるのがRubyの仕様だ。

つまり最後のオブジェクトというのはヒアドキュメントの事で、つまり文字列のこと。

で、このERB形式のHTMLの文字列を引数にERBオブジェクトを生成する。

そのためにはweb_pageのメソッドを渡してあげるだけでよく、

erb = ERB.new(web_page)

これで文字列が渡るのでOK。

erbインスタンスのresultメソッドを叩いてみると。

result = erb.result

これでERBオブジェクト内のRubyが実行されて、その結果が埋め込まれて返り値となる。

puts result

で表示してあげれば、

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang=&amp;quot;ja&amp;quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;
    &amp;lt;title&amp;gt;タイトル&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;

    &amp;lt;p&amp;gt;今日は晴れ&amp;lt;/p&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

という結果が得られる。

ここまではRubyファイルを作成して、ターミナル上でのみ実行結果を確認している。

これからは実際にWEBサーバーと連携して、Rubyを裏で動かしてブラウザに表示するようなのをやっていきます。


目次