状況
hashを設定している際に上記のエラーが出てしまった。
no implicit conversion of Symbol into Integer
を調べても原因がでてくるが解決法がピンとこない(試したが上手く行かない)
解決策
return
で返り値設定しているか確認
下記の場合はhash値を指定しているメソッドの最後に hash
をつけたら解決した
def edit_hash
hash = {}
#メソッド内容
hash # ここの宣言が必要 "return hash"を省略した記述
end
何故だったのか
Rubyの返り値には最後に評価された値が返る
という暗黙のルールがある。
そのため返り値を"return"で指定しているのだが、上のコードのように省略して書かれているので初学者は忘れやすい。(忘れた)
# retrunを設定していない
def edit_hash
hash = {}
hash[:name] = '鈴木'
hash[:age] = 24
hash[:gender] = 'female'
end
# result
female
# retrun(返り値)を設定
def edit_hash
hash = {}
hash[:name] = '鈴木'
hash[:age] = 24
hash[:gender] = 'female'
hash
end
# result
{:name=>"鈴木", :age=>24, :gender=>"female"}
反省
普通に初歩過ぎてビビった
最初にhashという変数を設定している時点で気づくべきだし、変数の中身確認すれば一発なのに…
超恥ずかしいけど今後見返すときの為、自戒の念をこめて全国公開