Rails でカウント可能なリソースをレンタルするための予約システムを作成しています。リソースの所有者は、一定期間に予約されたリソースの総量をパーセンテージで表示したいと考えています。
calendar_for gem は良い選択のようですが、このパーセンテージを一定期間にわたって表示する方法が見つかりません。
合計リソースが 100 であるとします。
- client-A は 2013 年 1 月 12 日から 2013 年 2 月 20 日まで 20 ユニットを予約します。
- client-B は 2013 年 1 月 15 日から 2013 年 3 月 1 日まで 30 ユニットを予約します。
予約容量を確認したい
- 2013 年 1 月 12 日から 2013 年 1 月 14 日まで = 20% (クライアント A からの予約のみ)
- 2013 年 1 月 15 日から 2013 年 2 月 20 日まで = 50% (20+30) (クライアント A およびクライアント B からの予約)
- 2013 年 2 月 21 日から 2013 年 3 月 1 日まで = 30% (クライアント B からの予約のみ)
徐々に、私はこれらの宝石を集めました
- gem「イベントカレンダー」
- 宝石「table_builder」
- 宝石「watu_table_builder」
- 宝石「calendar_date_select」
以下のコードは、RailsCast #213 の有名なレッスンの複製です。
index_calendar.html.erb
<%= @date.prev_month.strftime("%B %Y") %>
<%= calendar_for(@bookings, :year => @date.year, :month => @date.prev_month.month) do |calendar| %>
<%= calendar.head('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat') %>
<% calendar.day(:day_method => :from_date) do |date, bookings| %>
<%= date.day %>
<ul>
<% for booking in bookings %>
<li><%= link_to h(booking.capacity), booking %></li>
<% end %>
</ul>
<% end %>
<% end %>
代替は次のとおりです。
<li><%= link_to h(booking.total_capacity(date)), booking %></li>
これは、 booking.rbの 2 つの方法と組み合わせて試しました。
これは from_date (開始時) に予約されたユニットのパーセンテージを示します。
def capacity
@a=Resource.find_by_id(self.resource_id).units
[(self.units/@a*100).to_s + "%"].join
end
これは from_date の合計予約のみを表示します
def total_capacity(day)
@wall=Booking.joins(:resource).
where("#{day}<=till_time AND from_time>#{day}").sum(:units)
end
予約モデルには次のフィールドがあります。
- :from_date,
- :日まで、
- :単位
リソースモデルは
- :単位
ありがとう、ニック