LoginSignup
0
0

More than 3 years have passed since last update.

Rails <%= 式 %> 中身がない時にエラーが起こらない理由

Posted at

この記事について

初心者が初心者に対して記述した初心者のRails記事

ずっと何となく疑問に思っていたこと。

controllerでインスタンス変数に何かしらの値を入れたつもりだったが実は中身が空(nil)やって、その変数をviewに渡しても何のエラーも起こらないことが謎やった。

なぜエラーが起こらないのか?

理由は<%= 式 %>が出力されるときは、式に対してto_sメソッドが呼び出されているから

つまり、結果の出力はいつも自動的に<%= 式.to_s %>となっている。このメソッドが使える理由はRubyのオブジェクトは全てto_sメソッドを持ち合わせているからやねんな。

中身が入っていないインスタンスに対してto_sメソッドを呼びだす(nil.to_s)と、空文字を出力するようになっている。やからエラーが出さず、そしてそのまま何も表示されないんやな。

#controller
@name = nil

#view
<p><%= @name.to_s %>さん</p>

#出力
#=> さん

まとめ

学びたての時はエラーが出ないから気付き辛いけど、「裏側ではこうなってるんだよー」って分かるとどんな問題が起こってるか発見しやすくなりそう。
やから、このままちゃんと学習を続けていこうと改めて思えた。

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0