0

次の形式のテーブルに日時の列があります。

2012-10-30 08:00:00 UTC

日付ごとに時間を収集する配列またはハッシュを作成するにはどうすればよいですか。

2012-10-30
  8:00
  9:00
  13:00 
2012-11-02
  8:00
  9:00

最後に、次のような Web 出力が必要です。

October 30, 2012
  8:00   <reserve button>
  9:00   <reserve button>
  13:00  <reserve button>

November 2, 2012
  8:00   <reserve button>
  9:00   <reserve button>

配列を正しくセットアップできれば、html部分を理解できます。

4

2 に答える 2

1
sample = ["2012-10-28 08:30:00 UTC", 
          "2012-10-28 09:00:00 UTC", 
          "2012-11-30 09:15:00 UTC", 
          "2012-11-30 08:00:00 UTC"]

sample.each_with_object(Hash.new{ |h, k| h[k] = [] }) do |d, h|
  date = DateTime.parse(d)
  h[date.strftime("%B %-d, %Y")] << date.strftime("%k:%M")
end
# => {"October 28, 2012"=>["8:30", "9:00"], "November 30, 2012"=>["9:15", "8:00"]} 
于 2012-09-20T16:30:20.683 に答える
1

テーブルから利用可能なすべてのタイムスタンプを取得します。次に例を示します。

available_times = SomeTable.select(:some_column).order(:some_column).all

日付でハッシュを作成します。

@result = available_times.inject({}) do |m, timestamp| 
  date = timestamp.to_date
  m[date] ||= []
  m[date] << timestamp
  m
end

@result は、利用可能な時間の日付によるハッシュになります。

ビューでこれを実行できるようになりました。

<% @result.each do |date, timestamps| -%>
  <div><%= date.strftime("%B %-d, %Y") %></div>
   <% timestamps.each do |timestamp| -%> 
     <%= timestamp.strftime("%k:%M") %>  <input id='<%= timestamp.to_f%>' type='button' value='Reserve Button'/>
     <br/>
   <% end -%>
<% end -%>
于 2012-09-20T16:22:30.110 に答える