-1

私の質問はRailsに似ています-selectタグの月の配列を返します

しかし、私はこのような配列が必要です:

[
  ["September", 9], 
  ["August", 8],
  ["July", 7], 
  ["June", 6],
  ["May", 5], 
  ["April", 4],
  ["March", 3],
  ["February", 2],
  ["January", 1],
  ["December", 0]
  ["November", -1], 
  ["October", -2]
]

また、現在の月が10月の場合、次のようになります。

[
  ["October", 10]
  ["September", 9], 
  ["August", 8],
  ["July", 7], 
  ["June", 6],
  ["May", 5], 
  ["April", 4],
  ["March", 3],
  ["February", 2],
  ["January", 1],
  ["December", 0]
  ["November", -1]
]
4

1 に答える 1

5

これはそれを行う必要があります:

require 'date'
Date::MONTHNAMES[1..12].reverse.rotate(12-Time.now.month).each_with_index.collect{|m, i| [m, Time.now.month-i]}

編集:

年を表示したいコメントで述べたように、「過去にさかのぼる」には別のアプローチが必要です。レールを使用しているので、activerecordの日付関数を使用してそれを行うことができます。

require 'active_support/core_ext/date/calculations'
t = Time.now
(0..11).collect { |i| current = t.advance(months:-i); ["#{Date::MONTHNAMES[current.month]} #{current.year}", t.month-i ] }
于 2012-09-22T18:05:20.900 に答える