2015-03-13 103 views
0

试图从表中的日期字段(而不是created_at或updated_at)中找到唯一的月份和年份,并使用这些值填充两个选择框,用户可以从中选择哪些年份和/或者他们想要报告的月份。从本质上讲,我只想给用户提供有记录的年份和月份。我使用Postgresql作为我的分贝。从日期查找唯一的月份和年份

我目前得到在我的控制器使用此代码值:

@list_of_years = @subset.pluck(:usg_date).map{|y| y.year}.uniq.sort 
@list_of_months = @subset.pluck(:usg_date).map{|m| m.month}.uniq.sort 

本工程以它带给我的价值的程度,而不是在我想要的格式,我想不出如何使用它们来填充选择框。例如,对于一个月,我想显示一月,二月,三月,而不是1,2,3,等

回答

0

试试这个:

Model.select("created_at").map{ |i| i.created_at.year }.uniq

要获得每月使用的名称你必须使用Date::MONTHNAMES(首先你可能需要require 'date') 如:

LeaveSystem.select("created_at").map{ |i| Date::MONTHNAMES[i.created_at.month] }.uniq 

结果:["December", "February", "March"]

+0

这给了我几个月和几年,只做了一些修改'@list_of_years = Usage.select(:usg_date).map {| i | i.usg_date.year} .uniq和@list_of_months = Usage.select(:usg_date).map {| i |日期:: ABBR_MONTHNAMES [i.usg_date.month]} .uniq'然而,月份没有正确排序(按日历顺序)。如果我添加排序,它们按字母顺序排序。 – Kurtismonger 2015-03-18 13:59:22

相关问题