Edited at

to_a使って年月日一覧表示

More than 3 years have passed since last update.


一覧表示で年月日表示

※ 今年の一覧取得

dates = (Date.today.beginning_of_year..Date.today.end_of_year).to_a

=>
[Wed, 01 Jan 2014,
Thu, 02 Jan 2014,
Fri, 03 Jan 2014,
Sat, 04 Jan 2014,
Sun, 05 Jan 2014,
~
Sat, 27 Dec 2014,
Sun, 28 Dec 2014,
Mon, 29 Dec 2014,
Tue, 30 Dec 2014,
Wed, 31 Dec 2014]

viewで

dates.each do |date|

date.to_s # yyyy-mm-dd
%w(日 月 火 水 木 金 土)[date.wday] # 曜日
# dateはDate型です よしなに使えたりしますね
end

シンプルでいいね!

@jnchito さんから編集リクエストを頂きました!以下になります!

大変勉強になります。

Rangeをループさせるだけであれば to_a なしで実行できます。

dates = Date.today.beginning_of_year..Date.today.end_of_year

dates.each do |date|
date.to_s
%w(日 月 火 水 木 金 土)[date.wday]
end

Railsで日付を文字列に変換する場合は、yamlで事前にフォーマットを定義しておくと手軽にシステム全体のフォーマットをコントロールできます。

さらに、将来日本語以外のフォーマットが必要になったときも切り替えがラクです。

# config/locales/ja.yml

ja:
date:
abbr_day_names:
-
-
# ...
abbr_month_names:
-
- 1月
- 2月
# ...
day_names:
- 日曜日
- 月曜日
# ...
formats:
default: ! '%Y/%m/%d'
long: ! '%Y年%m月%d日(%a)'
short: ! '%m/%d'

>> I18n.locale 

:ja
# defaultのフォーマットを使う
>> I18n.l Date.today
"2014/12/23"
>> I18n.l Date.today, format: :long
"2014年12月23日(火)"
>> I18n.l Date.today, format: :short
"12/23"
# ymlに定義していないフォーマットを使いたい場合
>> I18n.l Date.today, format: '%a'
"火"

# ロケールをenに変更する
>> I18n.locale = 'en'
"en"
>> I18n.l Date.today
"2014-12-23"
>> I18n.l Date.today, format: :long
"December 23, 2014"
>> I18n.l Date.today, format: :short
"Dec 23"
>> I18n.l Date.today, format: '%a'
"Tue"