我有一个应用程序,可以从用户那里获取一些数据,一切正常。我正在尝试在模型中建立一个分数,如果存在一些数据,该分数会上升,而我正在尝试这样的事情:
def score
score = 0
if self.moving = true
score += 5
end
end
这是我的表格,“移动”列为布尔值:
<div class="field">
<%= f.select :moving, [['Yes', true], ['No',false]], {}, :class => 'form-control' %>
</div>
发生的是,当我尝试此操作时,如果为“是”,则将分数加5,但是如果我将其更改为“假”,我希望该分数回到已建立的原始分数。
分数也应该存储在数据库中已创建的列中,我尝试使用self.score
它,但似乎不起作用?
我在这里先向您的帮助表示感谢。
您正在分配(单等号)
if moving = true
puts "moving"
end
这将始终执行if块,因为赋值的返回值为true)
相反,您应该比较(双等于号)
if moving == true
puts "moving"
end
但这仍然有些复杂,因为您首先将一个布尔值与另一个布尔值进行比较,然后将该比较结果传递给if子句。看起来有点像这样:
result = moving == true
if result
puts "moving"
end
相反,您可以只写:
if moving
puts "moving"
end
您甚至可以使用if as语句修饰符:
puts "moving" if moving
返回布尔值的方法通常会附加一个“?” 指示此行为:
def moving?
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句