nil での「未定義メソッド」エラーを回避するためのハッシュの .try() と同等のものはありますか? [重複] 質問する

nil での「未定義メソッド」エラーを回避するためのハッシュの .try() と同等のものはありますか? [重複] 質問する

Rails では、値が存在しない場合にエラーを回避するために次の操作を実行できます。

@myvar = @comment.try(:body)

ハッシュを深く掘り下げていて、エラーを取得したくない場合は、それに相当するものは何ですか?

@myvar = session[:comments][@comment.id]["temp_value"] 
# [:comments] may or may not exist here

上記の場合、session[:comments]try[@comment.id]は機能しません。どうすればよいでしょうか?

ベストアンサー1

.の前にを入れるのを忘れましたtry:

@myvar = session[:comments].try(:[], @comment.id)

since は、[]を実行するときのメソッドの名前です[@comment.id]

おすすめ記事