Rails 3按创建日期的周列出所有用户

时间:2012-03-07 23:41:46

标签: ruby-on-rails ruby ruby-on-rails-3

这适用于rails控制台(rails c),但从浏览器看不到,它只显示结果,没有错误。

在控制器上我有:

def weekly_user_stats
    @created_users = User.where("username IS NOT NULL")
    @created_users_by_week =  Hash.new{ |h,k| h[k] = [] }
    @created_users.each do |u| 
      unless u.nil?
          @created_users_by_week[u.created_at.beginning_of_week.strftime("%Y-%m-%d")].push("#{u.username}")
        end
      end
  end

关于我的观点:

%ul
    = @created_users_by_week.keys.sort.each do |k|
      %li
        = puts "#{k} :  #{@created_users_by_week[k]}"
在页面上的

结果我只看到了键,但没有看到键内的值,这些键应该是一个用户数组。 在控制台上工作得很好.. 我做错了什么?

2 个答案:

答案 0 :(得分:0)

视图看起来不应该更像这样吗?

%ul
    - @created_users_by_week.keys.sort.each do |k|
      %li #{k} :  #{@created_users_by_week[k]}

请参阅:http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html

答案 1 :(得分:0)

我不熟悉haml所以我不知道你的具体问题。但是我建议你在数据库中存储一个不同的日期,以便按周(或者如果你想要的话)快速检索你创建的用户。

你可以通过将数组存储为包含这些内容的属性来实现:

dates = ['20120307', '201203', '2012', '201210']

使用

dates[0] # (yyyymmdd)
dates[1] # (yyyymm)
dates[2] # (yyyy)
dates[3] # (yyyyww)  ww = week number

然后,您可以通过查询包含“201210”的日期属性来检索用户。