将strftime放在rails each_value中会产生错误

时间:2014-07-07 17:53:58

标签: ruby-on-rails

我试图以长篇(7月)的数字显示数据,而不是数字。它给出了一个错误"未定义的方法`strftime' 7:Fixnum"。我不确定把它放在哪里,因为我是新手。

def show
  @m = Model.all.order("date DESC")

  @months_in_year = @m.group_by{|x| x.date.year}
  @months_in_year.each_value {|months| months.map!{|m| m.date.month.strftime('%B')}.uniq!}
  @all_months = @months_in_year.values.sort



  respond_to do |format|
      format.html { render :action => :show }
      format.js
      format.json { render :json => { :month => @all_months } }
  end   
end    

1 个答案:

答案 0 :(得分:1)

您之所以看到此错误,是因为strftime适用于DateTimeTimeWithZone个对象。它不适用于整数。 TimeWithZoneacts just like the ruby Time class。在.month will return an Fixnum上致电TimeWithZone

@months_in_year.each_value {|months| months.map!{|m| m.date.strftime('%B')} }

应该为您提供您正在寻找的东西。