我有一个带有created_at
的模型文章在我的索引视图中,我希望用户能够选择在“2010年10月,2010年11月,2010年12月等”中创建的所有文章。只有一个选择下拉列表。
以前有人这样做过吗?
答案 0 :(得分:3)
Rails 3(MySQL)
class Article < ActiveRecord::Base
...code here...
def self.article_months
group_by_clause = "to_char(created_at,'<your date format>')"
Article.group(group_by_clause).select("#{group_by_clause} as month, count(*) as count").order(created_at desc).all
end
...code here...
end
在您的视图中,使用select_tag或collection_select或其他内容并渲染上面的集合。
答案 1 :(得分:2)
在我的控制器中,我做了:
@startdates = ActiveRecord::Base.connection.select_rows("SELECT DISTINCT MONTH(start_date), YEAR(start_date) FROM schedules WHERE event_id IN (#{@events.map{|n| n.id}.join(',')}) ORDER BY start_date ASC;")
在我看来:
<%= select(:event, :startdate, @startdates.map{|s| ["#{t("date.month_names")[s[0].to_i]} #{s[1]}", "#{s[1]}-#{s[0]}"]}, {:selected => @startdate.to_s, :include_blank => "All"}) %>