如果设置了源值,我经常需要分配一个变量.到目前为止,我这样做了:
filters[:red] = params[:search][:red] unless params[:search][:red].nil?
这有效,但看起来有点笨拙.必须有更干的方法来获得这个结果.
有什么建议?
最好的祝福.
AsbjørnMorell.
最佳答案 如果你发现自己做了很多这些,你可以写一个小帮手方法:
def set_unless_nil(hsh, key, val)
hsh[key] = val unless val.nil?
end
然后:
set_unless_nil filters, :red, params[:search][:red]
如果源和目标哈希中的键经常相同,您可以写:
def copy_key_unless_nil(src_hash, key, dest_hash)
dest_hash[key] = src_hash[key] unless src_hash[key].nil?
end
然后:
copy_key_unless_nil params[:search], :red, filters
或者,您可以将值设置为Hash,然后在最后整理散列以删除所有具有nil值的键:
filters.delete_if { |k, v| v.nil? }