Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RAILS:使用日历在一段时间内预订后的资源可用性_Ruby On Rails_Resources_Calendar_Rubygems - Fatal编程技术网

Ruby on rails RAILS:使用日历在一段时间内预订后的资源可用性

Ruby on rails RAILS:使用日历在一段时间内预订后的资源可用性,ruby-on-rails,resources,calendar,rubygems,Ruby On Rails,Resources,Calendar,Rubygems,我正在为Rails中可数资源的租金编写预订系统。资源所有者希望以百分比形式查看一段时间内预订的资源总量 gem的calendar_似乎是一个不错的选择,只是我没能找到显示一段时间内这个百分比的方法 假设总资源为100: 客户A从2013年1月12日至2013年2月20日预订20套。 2013年1月15日至2013年3月1日期间的客户B图书30套。 我想看看预定的座位 从2013年1月12日至2013年1月14日=仅从A客户处预订20% 从2013年1月15日至2013年2月20日=50%20+3

我正在为Rails中可数资源的租金编写预订系统。资源所有者希望以百分比形式查看一段时间内预订的资源总量

gem的calendar_似乎是一个不错的选择,只是我没能找到显示一段时间内这个百分比的方法

假设总资源为100:

客户A从2013年1月12日至2013年2月20日预订20套。 2013年1月15日至2013年3月1日期间的客户B图书30套。 我想看看预定的座位

从2013年1月12日至2013年1月14日=仅从A客户处预订20% 从2013年1月15日至2013年2月20日=50%20+30来自客户A的预订 和客户-B 从2013年2月21日至2013年3月1日=仅从客户B处预订30% 渐渐地,我收集到了这些宝石

创业板“活动日历” gem“表格生成器” gem“watu_表_生成器” gem“日历\日期\选择” 下面的代码是著名课程RailsCast 213的复制品

index_calendar.html.erb

这也只显示了自即日起的总预订量 预订模型包含以下字段:

:自年月日起, :截止日期, :单位 资源模型

:单位 谢谢,
尼克

我的问题的答案就是这个问题的答案:

预订天数/index\u calendar.html.erb

这是通过booking_days_controller.rb备份的

预订日是动态创建的,不会存储到数据库中

预订日的结构为{:id,:value,:day}

Booking对象存储在DB中,并具有以下结构{:user\u id,:resource\u id,:from\u time,:to\u time,:value}。它是通过booking_day对象显示在日历中的所有信息的基础

num1000是一个i=0…999的表


Nik

虽然有一个解决方案,但对我来说似乎很难看:在预订资源之后,在一段时间内生成与预订天数对应的“预订天数”对象链。我很害怕很快污染了数据库。
    <%=  @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>
def capacity
  @a=Resource.find_by_id(self.resource_id).units
  [(self.units/@a*100).to_s + "%"].join
end
def total_capacity(day)
  @wall=Booking.joins(:resource).
    where("#{day}<=till_time AND from_time>#{day}").sum(:units)
end
<%=  @date.prev_month.strftime("%B %Y") %>
<%= calendar_for(@booking_days, :year => @date.year, :month => @date.month) do |calendar| %>

  <%= calendar.head('Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat') %>

  <% calendar.day(:day_method => :day) do |date, booking_days| %>
    <%= date.day %>
    <ul>
      <% for booking_day in booking_days %>
        <li><%= link_to h(booking_day.value), booking_day %></li>
      <% end %>
    </ul>
  <% end %>
<% end %>
def index_calendar
    @date = params[:month] ? Date.strptime(params[:month],"%Y-%m") : Date.today
    dstart=@date.prev_month.beginning_of_month
    dend=@date.next_month.end_of_month
    rid=Resource.find_by_user_id(session[:user_id]).id
    sql = ["select @row := @row + 1 as id, ts.dat as day, sum(bookings.value) as value " +
        "from (select adddate('#{dstart}', num1000.i) as dat " + 
        "from num1000 where adddate('#{dstart}', num1000.i) <= '#{dend}') as ts, resources, " + 
        "bookings JOIN  (SELECT @row := 0) r " + 
        "where bookings.resources_id=resources.id AND resources.id=#{rid} AND " + 
        "adddate(bookings.from_time,-1)<=ts.dat AND ts.dat<=bookings.till_time group by ts.dat"].join
    @booking_days = BookingDay.find_by_sql(sql)
    respond_to do |format|
      format.html # index_calendar.html.erb
      format.json { render json: @booking_days }
    end
  end