Ruby on rails 3-如果是,则将+1加到稍后打印出的变量上

| 你好 我想创建一个变量,如果语句为真,则添加+1,然后在遍历所有语句后显示该变量的总数。
<% @variable_with_counts = 0 %>
<% games.each do |game|%>
  <% if game_is_true?(game.id) %>
    <% @variable_with_counts += 1 %>
  <% end %>
<% end %>

<%= @variable_with_counts %>
这使我没有总数,但只有0或1。 如您所见,我是新手... 更新 很奇怪,既然我再次测试过,就可以了,抱歉! 提前致谢!
已邀请:
对问题采取更类似于oop和功能的方法,从而减少视图中的逻辑。这个怎么样?
<%= games.all.count {|game| game_is_true? game.id } %>
为了使它更短,请使“ game_is_true?”成为您的游戏类的方法:
class Game << ActiveRecord::Base

  def is_true?
    game_is_true? self.id # or whatever evaluates this
  end

end
结果如下:
<%= games.all.count {|game| game.is_true? } %>
根据您的ActiveRecord版本,您可能需要将\“ all \”替换为\“ each \”或\“ to_a \”。如果\“ game_is_true?\”实际上是在评估SQL字段,则将其转换为带有where子句的作用域方法更有意义,因此您可以执行\“ games.is_true.count \”来减少SQL开销。

要回复问题请先登录注册