我有一个名为
的实例变量@filtered_ratings = params[:ratings].keys
但是,如果params[:ratings]
为nil并且在其上调用#keys
,则会引发错误。如果@filtered_ratings为nil,我希望将@filtered_ratings设置为空数组(或散列)。没有太多代码,有没有一种简单的方法可以做到这一点?谢谢!
答案 0 :(得分: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) || []
答案 1 :(得分:1)
试试这个:
@filtered_ratings = params[:ratings].try(:keys)
如果params[:ratings]
为nil
,它也会返回nil
(而非提出错误)。
此外,您当然可以在空哈希(#keys
)上调用{}
。但nil
不是一个。
答案 2 :(得分:1)
我使用andand gem,因为我已经习惯了:
@filtered_ratings = params[:ratings].andand.key
这会将@filtered_ratings设置为nil或键值 - 可能是你想要的也可能不是。