0

私はというインスタンス変数を持っています

@filtered_ratings = params[:ratings].keys 

ただし、params[:ratings]がnilで#keys呼び出された場合は、エラーが発生します。@filtered_ratingsがnilの場合、@ filtered_ratingsを空の配列(またはハッシュ)に設定する必要があります。あまり多くのコードなしでこれを行う簡単な方法はありますか?ありがとう!

4

3 に答える 3

2
@filtered_ratings = params[:ratings].keys if params[:ratings].respond_to? :keys

編集:

 # if params[:ratings] is nil then return []
 @filtered_ratings = params[:ratings].try(:keys) || []
于 2012-06-08T03:23:06.067 に答える
1

これを試して:

@filtered_ratings = params[:ratings].try(:keys)

params[:ratings]の場合、 (エラーを発生させる代わりに)同様nilに戻ります。nil

また、間違いなく#keys空のハッシュ({})を呼び出すことができます。しかし、nilそれは1つではありません。

于 2012-06-08T03:23:00.083 に答える
1

私はそれに慣れているので、andandgemを使用します:

@filtered_ratings = params[:ratings].andand.key

これにより、@ filtered_ratingsがnil、つまりキー値に設定されます。これは、希望する値である場合とそうでない場合があります。

于 2012-06-08T03:26:49.153 に答える