##この記事について
初心者が初心者に対して記述した初心者の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>
#出力
#=> さん
##まとめ
学びたての時はエラーが出ないから気付き辛いけど、「裏側ではこうなってるんだよー」って分かるとどんな問題が起こってるか発見しやすくなりそう。
やから、このままちゃんと学習を続けていこうと改めて思えた。