Мне трудно решить, как изменить этот метод в моем контроллере. Идея заключается в том, что (в данном случае) он отображает пользователей, которые присоединились (или были созданы) в течение последних двух недель.
Вам может быть интересно, почему я сделал @graph_limit
, и это потому, что я всегда хочу, чтобы день с наибольшим количеством результатов был самым высоким столбцом на моей гистограмме (которые в представлении просто создаются с помощью css by делая высоту <div>
используя css).
В основном я хочу высушить его и ... вы знаете, как можно лучше улучшить этот метод:
# Controller
def index
two_weeks_ago = Date.today - 13.days
@users_graphed = User.count(:conditions=>["created_at >= ?", two_weeks_ago], :order => 'DATE(created_at) DESC', :group => ["DATE(created_at)"])
two_weeks_ago.upto(Date.today) do |day|
@graph_limit = 100/@users_graphed.values.max.to_f
@users_graphed[day.to_s] ||= 0
end
end
Также я должен отметить, что вы, ребята, вероятно, собираетесь разорвать мой код в клочья ... так что я готов к результату.
# View
<% @users_graphed.sort.reverse.each do |user| %>
<li>
<% content_tag :div, :style => "height: #{number_with_precision(user[1] * @graph_limit, :precision => 2)}px; ", :class => "stat_bar" do %>
<%= content_tag(:span, user[1]) unless user[1] == 0 %>
<% end %>
</li>
<% end %>
В конечном счете, и моя настоящая цель заключается в том, чтобы поместить это в мой контроллер приложений и иметь возможность наметить любые модели в разы create_at
. может быть что-то вроде tasks.chart_by(2.weeks)
. Как бы вы, ребята, разбили это на что-то, что я могу использовать во всем приложении?