使用Ruby,我如何根据条件设置变量?类似的东西:
dog_name = params[:dog][:name] if params[:dog]
如果没有设置params [:dog],那么dog_name就不会被设置。
现在,如果params [:dog]为零,我会收到错误。
答案 0 :(得分:7)
您可以使用&&
运算符:
dog_name = params[:dog] && params[:dog][:name]
如果dog_name
不存在,现在nil
将是params[:dog]
,否则它将是params[:dog][:name]
的值。
答案 1 :(得分:3)
你在做什么应该工作。
我想params[:dog]
实际上并不是零。我敢打赌它是一个空字符串(或空哈希)。 (您可以通过将params [:dog] .inspect输出到日志或标准输出来检查这一点。)
Rails有一个方法blank?
,用于测试nil,空字符串,空集合。
尝试:
dog_name = params[:dog][:name] if !params[:dog].blank?
或者:
dog_name = params[:dog][:name] unless params[:dog].blank?
答案 2 :(得分:1)
您还可以使用&& =运算符:
dog_name = params.has_key(:dog)
dog_name &&= params[:dog].has_key(:name)
dog_name &&= params[:dog][:name]
答案 3 :(得分:0)
怎么样:
dog_name = params[:dog][:name] if params.has_key?(:dog) && params[:dog].has_key(:name)
当params [:dog]为零时,你得到什么错误?
答案 4 :(得分:0)
你怎么试试这个:
dog_name = params[:dog][:name] unless params[:dog].nil?