如何解决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开销。版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。