我有一个名为的实例变量
@filtered_ratings = params[:ratings].keys
但是,如果params[:ratings]
为 nil 并#keys
在其上调用,则会引发错误。如果@filtered_ratings 为零,我希望将@filtered_ratings 设置为一个空数组(或哈希)。有没有一种简单的方法可以在没有太多代码的情况下做到这一点?谢谢!
我有一个名为的实例变量
@filtered_ratings = params[:ratings].keys
但是,如果params[:ratings]
为 nil 并#keys
在其上调用,则会引发错误。如果@filtered_ratings 为零,我希望将@filtered_ratings 设置为一个空数组(或哈希)。有没有一种简单的方法可以在没有太多代码的情况下做到这一点?谢谢!
@filtered_ratings = params[:ratings].keys if params[:ratings].respond_to? :keys
编辑:
# if params[:ratings] is nil then return []
@filtered_ratings = params[:ratings].try(:keys) || []
尝试这个:
@filtered_ratings = params[:ratings].try(:keys)
如果params[:ratings]
是nil
,它也会返回nil
(而不是引发错误)。
此外,您当然可以调用#keys
空哈希 ( {}
)。但nil
不是一个。
我会使用 andand gem,因为我已经习惯了:
@filtered_ratings = params[:ratings].andand.key
这会将@filtered_ratings 设置为nil,或者键值——这可能是也可能不是你想要的。