Ruby on rails 3 - Если затем добавить +1 к переменной, которая позже будет распечатана - PullRequest
1 голос
/ 19 апреля 2011

Привет Я хочу создать переменную и добавить +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.

Я новичок, как вы можете видеть ...

UPDATE Странно, теперь, когда я проверил это снова, это сработало, извините!

Заранее спасибо!

1 Ответ

2 голосов
/ 19 апреля 2011

Используйте более сложный и функциональный подход к вашей проблеме, что, в свою очередь, уменьшит логику в представлении. Как насчет этого?

<%= 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 вам может потребоваться заменить «все» на «каждый» или «to_a». Если "game_is_true?" фактически оценивая поля SQL, было бы более разумно превратить его в метод области с предложением where, чтобы вы могли выполнить «games.is_true.count», который уменьшает накладные расходы SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...