Ruby on rails 三元作品在本地和heroku不同

Ruby on rails 三元作品在本地和heroku不同,ruby-on-rails,heroku,Ruby On Rails,Heroku,我有这个方法,它非常简单,几乎所有时候isTrue参数都应该为false并返回“2” 这在我的开发环境中运行良好,但当我把它推给heroku时,它突然开始返回,好像它是真的,我绝对肯定它是假的。我认为可能是在检查var是否为nil(或类似的值) 我将三元结构更改为: isTrue == true ? 1 : 2 它纠正了问题,我不明白为什么会发生这种情况。 有人能解释一下吗? 谢谢 这绝对是错误的: isTrue = true ? 1 : 2 它将变量isTrue设置为true,并使用该语句

我有这个方法,它非常简单,几乎所有时候isTrue参数都应该为false并返回“2”

这在我的开发环境中运行良好,但当我把它推给heroku时,它突然开始返回,好像它是真的,我绝对肯定它是假的。我认为可能是在检查var是否为nil(或类似的值)

我将三元结构更改为:

isTrue == true ? 1 : 2
它纠正了问题,我不明白为什么会发生这种情况。 有人能解释一下吗?
谢谢

这绝对是错误的:

isTrue = true ? 1 : 2
它将变量
isTrue
设置为
true
,并使用该语句的结果(
true
)作为三元运算符的输入,因此它将始终返回
true

将其更改为:

isTrue == true ? 1 : 2
关于开发模式和生产模式之间的差异:检查是否确实向方法中输入布尔值,而不是整数(0或1)、字符串(“0”、“1”、“t”、“f”、“y”、“n”等)或nil

这将始终返回注释中的
1

=
是ruby中的函数,用于为变量赋值

然而,
==
,这是一个错误


因此,对于当前的代码,您将指定“isTrue=true”,然后告诉代码返回
1
如果
isTrue
true

宁愿是
isTrue==true
那个'fix'总是会返回1,因为将'='true赋值给isTrye将总是true。这是一个输入错误:S sorry这是一个输入错误:S sorry这是一个输入错误:S sorry这很有意义,我将记录该值并检查它。谢谢你是正确的亲爱的先生,发生的事情是参数作为url参数传递为“is_true”=>“false”,因此它会将其识别为字符串。非常感谢你。
isTrue == true ? 1 : 2
isTrue = true ? 1 : 2