0

我有一个名为的实例变量

@filtered_ratings = params[:ratings].keys 

但是,如果params[:ratings]为 nil 并#keys在其上调用,则会引发错误。如果@filtered_ratings 为零,我希望将@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不是一个。

于 2012-06-08T03:23:00.083 回答
1

我会使用 andand gem,因为我已经习惯了:

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

这会将@filtered_ratings 设置为nil,或者键值——这可能是也可能不是你想要的。

于 2012-06-08T03:26:49.153 回答