Ruby ヒアドキュメントでHTML文の中に変数を埋め込む

Ruby ヒアドキュメントでHTML文の中に変数を埋め込む

Rubyでヒアドキュメントを使って、変数textにHTML文を代入する。
代入するHTML文の中には式展開で変数iを埋め込み、変数iが展開された状態で、変数textに代入するようにする。

ヒアドキュメントの基本構成

変数代入時に<<識別子~識別子と記載する。
識別子で挟まれた部分が変数に代入される。
識別子は文字列であれば何でもよい。
ヒアドキュメントじゃないと、改行や、”などを/n、\”と表現する必要があり、たくさんある場合に大変。
ヒアドキュメントを使うとその必要がなくなり、そのままの内容を記載すればよいので便利。

変数 = <<'識別子'
  内容
識別子

サンプルコード

text = <<'EOS'
これは
テスト
コードです。
EOS

puts text

結果

これは
テスト
コードです。

識別子をEOSにしたけど、EOSの部分は識別子同士が同じであれば何でもよい。
以下でもOK。
まあ代入する文字列の中に識別子が出てきてしまうとだめなので、EOSにしておくのが無難。

text = <<'AAA'
これは
テスト
コードです。
AAA

ヒアドキュメント内に変数を埋め込んでみる。

i= 3
text = <<'EOS'
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Test</title>
  </head>
  <body>
    <h1>1-1<h1>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。
    </a><br>
  </body>
</html>
EOS

puts text

結果
変数が展開されずにそのまま表示された。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Selenium Test</title>
  </head>
  <body>
    <h1>1-1<h1>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。
    </a><br>
  </body>
</html>

これを解決するには、
識別子を””(ダブルコーテーション)で挟む

””で挟んだコード

i= 3
text = <<"EOS"
<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Selenium Test</title>
  </head>
  <body>
    <h1>1-1<h1>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-1です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-2です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-3です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-#{i}-4です。
    </a><br>
  </body>
</html>
EOS

puts text

結果
無事変数iが3に展開された!!やった

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="utf-8">
    <title>Selenium Test</title>
  </head>
  <body>
    <h1>1-1<h1>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-1です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-2です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-3です。
    </a><br>
    <a href="file:///D:/rubyproject/data/selenium/link-text/1.html">1-3-4です。
    </a><br>
  </body>
</html>

Rubyカテゴリの最新記事