1. ホーム
  2. ruby-on-rails

[解決済み] ハッシュの .try() に相当するもので、nil での "undefined method" エラーを回避するため?[重複)。

2022-04-21 02:32:52

質問

Railsでは、値が存在しない場合に以下のようにして、エラーを回避することができます。

@myvar = @comment.try(:body)

ハッシュを深く掘っているときに、エラーを出したくない場合に相当するのは何でしょうか?

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

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

解決方法は?

をつけるのを忘れています。 . の前に try :

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

から [] を実行したときのメソッド名です。 [@comment.id] .