2013-10-17 17 views
0

我有這種方法它非常簡單,幾乎所有的時間isTrue參數應該是假的,並返回「2」。三元作品在本地和heroku不同

def test(isTrue = false) 
    isTrue ? 1 : 2 
end 

這部作品在我的開發ENV罰款,但是當我把它推到Heroku的突然它開始返回,如果它是真實的,是絕對進出口陽性,其假。我認爲它可能會被檢查,如果該變種是零(或類似的東西)

我改變了三元到:

isTrue == true ? 1 : 2 

而且它可以解決問題,我不明白爲什麼會這樣。 有人可以解釋它嗎? 謝謝!

+0

寧可是'isTrue == true' – apneadiving

+1

'修復'將始終返回1,因爲將= true的分配給isTrye將始終爲真。 –

+0

這是一個錯字:S對不起 –

回答

1

這肯定是不對的:

isTrue = true ? 1 : 2 

它設置變量isTruetrue,並使用該聲明(true)作爲三元運算符的輸入的結果,因此這將始終返回true

將其更改爲:

isTrue == true ? 1 : 2 

關於開發和生產模式之間的差異:檢查你真的喂布爾入法,而不是整數(0或1),字符串(「0」,「1 ','t','f','y','n'等)或零。

+0

這是一個錯字:S對不起 –

+0

這是有道理的,我要記錄的價值,並檢查它。謝謝 –

+0

你是對的先生,親愛的先生,發生了什麼事是參數作爲URL參數傳遞爲「is_true」=>「false」,因此它會將其識別爲字符串。非常感謝你。 –

0
isTrue = true ? 1 : 2 

這將始終返回1作爲Mark Meeus評論。

=是ruby中的assignment operator,用於給一個變量賦一個給定的值。

==,但是是comparison operator

因此,如果您的代碼與當前版本一樣,那麼您將分配「isTrue = true」,然後告知代碼返回1,前提是isTruetrue

+0

這是一個錯字:對不起 –

相關問題