我是Rails和Ruby的初学者,我正在开发一个用于跟踪玩家及其胜利,损失和elo的桌子的elo系统。
现在我收到了错误
app/models/player.rb:36: syntax error, unexpected keyword_end,
expecting end-of-input):
app/controllers/players_controller.rb:3:in `index'
我已经搜索了所有文件,因为找不到关闭的支撑或支架,但找不到任何东西。以下是我的代码的一些片段:
PlayerController索引
def index
@players_items = Player.all.sort{|y,x| x.get_elo() <=> y.get_elo()}
end
PlayerModel方法
def get_elo()
return self.elo
end
def update_weight()
var = wins.count + lose.count
if(var <= 6)
self.weight = 50
elsif(6 < var and var <= 15)
self.weight = 25
else
self.weight = 15
end
end
def update_elo(p2_elo, result)
p1_elo = self.elo
expected_score = 1 / (1 + 10 ** ((p2_elo - p1_elo)/400))
self.elo += (self.weight * (result - expected_score)).round
end
如果有人能帮助我,我们将不胜感激。
编辑:根据要求,这是我的播放器模型类的第27-36行
def win_percentage()
var = wins.count + lose.count
if(var == 0)
return 0.001
end
else
return ((wins.count * 6) - (lose.count * 4))
end
end
end
答案 0 :(得分:2)
这是问题:
if(var == 0)
return 0.001
end # <~~ why this end keyword ?
else
return ((wins.count * 6) - (lose.count * 4))
end
应该是:
if(var == 0)
return 0.001
else
return ((wins.count * 6) - (lose.count * 4))
end
答案 1 :(得分:1)
您的(6 < var <= 15)
是有效的语法,但没有意义。这意味着(6 < var) <= 15
。由于6 < var
为true
或false
,因此会将其评估为true <= 15
或false <= 15
,除非您奇怪地覆盖<=>
,否则会导致错误1}}。
您可能打算(6 < var and var <= 15)
。
你有两个问题。
else
... end
之后,你有if
... end
。您可能希望if
... else
... end
。end
。您的代码看起来不太好。应该是这样的:
def win_percentage
return 0.001 if (wins.count + lose.count).zero?
(wins.count * 6) - (lose.count * 4)
end