我正在构建一个应用程序来比较两个足球运动员的梦幻足球比分。 NFL赛季为17周,因此比较中的每位球员都有17分。我设置它,以便每个分数是一个变量。
例如,运动员1的第1周得分是@a1w1
。运动员2是@a2w1
。
我在表格中比较了这些统计数据,我希望较高的分数显示为绿色。我最初写的代码不是很干。
<table>
<tr>
<% if @a1w1 != nil && @a2w1 != nil && @a1w1 > @a2w1 %>
<% @a1w1green = "green".html_safe %>
<% else %>
<% @a1w1green = nil %>
<% end %>
<% if @a1w1 != nil && @a2w1 != nil && @a1w1 < @a2w1 %>
<% @a2w1green = "green".html_safe %>
<% else %>
<% @a2w1green = nil %>
<% end %>
<td class='matchup-stats <%= @a1w1green %>'><%= @a1w1 %></td>
<td class='stat-week'>1</td>
<td class='matchup-stats <%= @a2w1green %>'><%= @a2w1 %></td>
</tr>
</table>
我将不得不重复这16次以填写所有17周。我有一个想法是创建一个循环来为我做这个,但我在修复语法时遇到了麻烦。
<table>
<% 1.upto(17) do|week| %>
<% @a1green = @a2green = nil %>
<% if @a1w[week] > @a2w[week] %>
<% @a1green = "green".html_safe %>
<% elsif @a2w[week] > @a1w[week] %>
<% @a2green = "green".html_safe %>
<% end %>
<tr>
<td class='matchup-stats <%= @a1green %>'><%= @a1w[week] %></td>
<td class='stat-week'><%= week %></td>
<td class='matchup-stats <%= @a2green %>'><%= @a2w[week] %></td>
</tr>
<% end %>
</table>
我知道使用[]
不正确,但我无法弄清楚写这个的正确方法。我是Ruby的新手,我已经在这里工作了好几个小时。有人可以借给我一些建议吗?
答案 0 :(得分:1)
受到Exupery的回答的启发,我想出了一个解决方案。我已经在数组中获得了玩家分数:@a1vals
和@a2vals
<table>
<% 0.upto(16) do|week| %>
<% @a1green = @a2green = nil %>
<% if @a1vals[week] != nil && @a2vals[week] != nil && @a1vals[week] > @a2vals[week] %>
<% @a1green = "green".html_safe %>
<% elsif @a1vals[week] != nil && @a2vals[week] != nil && @a1vals[week] < @a2vals[week] %>
<% @a2green = "green".html_safe %>
<% end %>
<tr>
<td class='matchup-stats <%= @a1green %>'><%= @a1vals[week] %></td>
<td class='stat-week'><%= week %></td>
<td class='matchup-stats <%= @a2green %>'><%= @a2vals[week] %></td>
</tr>
<% end %>
</table>
感谢您的帮助@Exupery!
答案 1 :(得分:0)
您可以使用hash而不是将每个分数存储为变量。你可以为每个玩家提供一个哈希并且每周都有一个密钥(然后你可以将这些玩家的集合存储为一个数组,以便于传递/迭代)。
例如:
@a1 = Hash.new
@a1[1] = 42
@a1[2] = 49
......等等(这只是一个简单的例子,有很多方法可以填充哈希的元素,如果你不熟悉我建议阅读ruby文档)。
然后你可以通过以下方式迭代玩家的周数:
1.upto(17) do |week|
score = @a1[week]
## do whatever with score
end