我很難決定如何在我的控制器中重構這個方法。這個想法是(在這種情況下)它繪製了過去兩週加入(或創建)的用戶。在我的控制器中重構一個簡單的方法
您可能想知道爲什麼我做了@graph_limit
的事情,那是因爲我總是希望結果最好的一天成爲我的條形圖上最高的條形圖(在視圖中,只是通過使用css創建使用css的<div>
的高度)。
基本上我要幹它,......你知道只是改進這種方法,儘可能:
# 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)
。你們會如何將這些分離出來,成爲我可以在整個應用程序中使用的東西?
出於某種原因,我覺得它應該是一個命名的範圍伴隨着一個幫手......我寧願在這種情況下有一個非常瘦的控制器。 – 2010-01-12 05:11:01