如何在Ruby中使用if语句在一行中设置变量?

时间:2009-11-08 05:18:57

标签: ruby-on-rails ruby

使用Ruby,我如何根据条件设置变量?类似的东西:

dog_name = params[:dog][:name] if params[:dog]

如果没有设置params [:dog],那么dog_name就不会被设置。

现在,如果params [:dog]为零,我会收到错误。

5 个答案:

答案 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?