【发布时间】:2012-10-29 05:27:31
【问题描述】:
我有一个索引视图,其中一个人输入两个玩家和一个分数,我的应用程序应该返回两个玩家的获胜者。我通过参数哈希获取输入并尝试处理它,但似乎 if 中提供的第一个条件总是评估为真。下面是我的控制器操作中的代码,以及呈现响应的视图:
def find_winner
@player_1 = params[:player_1]
@player_2 = params[:player_2]
@set_1 = params[:set_1]
@set_2 = params[:set_2]
@set_3 = params[:set_3]
a = @set_1[0].to_i
b = @set_1[1].to_i
c = @set_2[0].to_i
d = @set_2[1].to_i
e = @set_3[0].to_i
f = @set_3[1].to_i
if ((a + c + e) > (b + d + f)) then
@winner = @player_1
elsif ((a + c + e) < (b + d + f)) then
@winner = @player_2
else
@winner = "winner"
end
end
以及来自 .erb 模板的代码:
<%= @player_1 %>
<%= @a %>
<%= @player_2 %>
<%= @set_1.class %>
<%= @set_2 %>
<%= @set_3 %>
<%= @b %>
<blockquote> the winner is <%= @winner %>
@winner 的计算结果始终为 player_1
【问题讨论】:
-
顺便说一句,这里不需要
then关键字。您可以安全地放下它们。 -
我建议您的数据有问题。也就是说,您永远不会发送第二个玩家应该获胜的参数。你的代码在我看来没问题。
-
参数:{"utf8"=>"✓", "authenticity_token"=>"SJ1s58B0js+Tbb2LOJ99stlWSUQEk4tLmI3VxzUboYI=", "player_1"=>"loser", "player_2"=>"winner", "set_1"=>"3,6", "set_2"=>"2,6", "set_3"=>"0,0", "commit"=>"get Winner"} 服务器将上述内容发送到请求正文。当我像你在 .erb 代码中看到的那样评估它们时,它们包含值。
-
好吧,您是否尝试过调试打印
a, b, c, d...变量的实际值? -
是的,它们都像我预期的那样产生整数。
标签: ruby-on-rails ruby