2013-10-28 33 views

回答

45

這裏的一點:每個對象

region = params[:state].presence || 'US' 
# => 'US' 
region = params[:state] || 'US' 
# => '' 

更重要的是,它以同樣的方式工作(即返回nil如果對象是 '空'):

''.presence 
# => nil 

所以如果params[:state] == ''例如:

[].presence 
# => nil 

這裏的文檔,以供參考:

http://api.rubyonrails.org/classes/Object.html#method-i-presence

+0

沒有,當他們爲'空白應對?' – apneadiving

+0

@apneadiving沒有,你需要 '的ActiveSupport' 後,每'Object'實例響應'空?'。 參考: http://api.rubyonrails.org/classes/Object.html –

+0

@apneadiving查看'blank?'源代碼。有實現這種不同的行爲,取決於對象是否響應'empty?'。 –

1

我只是用它在我發現整齊的有效途徑。我的變量是一個字符串,如果它是空字符串我想零,否則我希望它轉換爲一個整數。

x.presence.try(&:to_i) 

"".presence.try(&:to_i) # => nil 
"22".presence.try(&:to_i) # => 22 
+1

爲什麼'nil.to_i#=> nil'?它應該是零 –

+0

@NickolayKondratenko,因爲有時你想區分一個空白值和字符串「0」。 – Kelvin