(Rails)インスタンス変数を数値として扱い演算する

状況

インスタンス変数を用いて演算したが想定外の結果となった。

controller

def about
@variable=10
end

views

<%=@valiable.to_i +2%>

表示結果

2

欲しい値は12であるが、2と表示。

.to_iと+2の間に空白があるのが原因と思い、なくしてみた。

view

<%=@valiable.to_i+2%>

表示結果

12

うまくいった。

ここで演算子を+➡-に変えてみたら

ArgumentError in Homes#about

が発生した。 これより、+であった場合は結合の意味を持っていたと思われる。

まとめ

.to_iと演算子の間は空白を入れてはいけない

因みに

view

<%=@valiable.to_i +2 +6%> #@valiable=10

は8と表記されるため、元々数字同士の演算では空白が合っても問題ないが 元々が変数と数値同士のものであるとうまく実行されないことを知った。

↑この原因は正直謎である。