我有一段代码可以在单击相应的复选框时启用或禁用选择列表,但如果它们在帖子上全部禁用,则不会在params列表中发送这些代码。所以我只有在存在时才需要执行代码。
我用过:
if params[:id][:id2].nil?
和
if params[:id][:id2].blank?
也
if params[:id][:id2].empty?
简单地说:
if params[:id][:id2]
所有人都会犯同样的错误......“你有一个零对象,你没有想到它。”我该如何解决这个错误?
答案 0 :(得分:7)
可能params[:id]
为零,请检查params[:id].nil?
。
编辑:以下评论指出,如果您要对blank?
或nil?
进行评估,empty?
会更好。
答案 1 :(得分:0)
同时
class Object
def unless_nil(default = nil, &block)
if nil?
default
else
block[self]
end
end
end
允许以下内容:
id2 = params[:id].unless_nil { |p_id| p_id[:id2] }
id2, id3 = params[:id].unless_nil([0, 0]) { |p_id| [p_id[:id2], p_id[:id3]] }