2010-07-11 116 views
2

嗯,我实际上并不想制作一个日历,但我需要一个每年的每一天的看法,我想这是一样的。说我看到了你看到的地方“7月1日”位于页面顶部,您可以在前一天和后一天查看链接。在这个下面有一个列表 - 在我的例子中 - 房间和他们有不同的状态 - 可用或保留。制作与Sinatra的日历

我怎么能用Sinatra和Datamapper制作这样的东西?我是否把它放在网址中,或者我有什么可能性?

get '/rooms/:date' do 
    "List of rooms for " + params[:date] 
end 

所以要重述。我正在尝试创建一个日历,在该日历中,您每天都可以获得一年中每天都有可用状态或预留状态的列表,但我不知道从哪里开始。

回答

3

我会从数据库设计开始。你的中心桌是什么?他们如何纳入时间数据?假设您有rooms的列表。那么你将不得不有另一个表(如room_reservations),每个记录有start_date,end_dateroom_id。寻找在某个日期占用的房间列表的查询应该是微不足道的。

require 'rubygems' 
require 'sinatra' 
require 'date' 
require 'haml' 

get '/' do 
    redirect "/rooms/#{Date.today}" 
end 

get '/rooms/:date' do |d| 
    @date = Date.parse d 
    haml :rooms 
end 

__END__ 

@@rooms 
%a{:href => "/rooms/#{@date - 1}"} 
    [email protected] 
%span 
    [email protected] 
%a{:href => "/rooms/#{@date + 1}"} 
    [email protected]+1 
+0

如果我是一个汽车旅馆,将有一个名字和众多嘉宾和许多部分型号:

作为实现在西纳特拉日期为中心的观点,因为它可以很简单。每个部分(A,B,C等)都有很多房间(1,2,3等),我想每个房间都有预订,并且预订有一个或多个客人。在客人入住汽车旅馆期间,工作人员应该可以将客人移动到另一个房间,所以我不确定start_date和end_date是否正确。 – schwift 2010-07-12 06:44:43

+1

好吧,这一切都取决于你想要构建你的应用程序的复杂程度,以及你是否计划立即开始复杂,或者开始简单,并且使其在迭代(版本等)上变得复杂。无论如何,你应该首先做的是1)设计你的数据库2)设计你的界面工作流程。 Ruby编码和Sinatra路由应该在最后。 – 2010-07-12 08:40:09

+0

我想过让它变得非常简单。它可能是一张名为房间属于一个部分的表格。房间当然可以有多个预订,但只有一个给定的日期。或者,最好将预订链接到多个房间。我想每个预订都会有开始日期和结束日期,但我仍然希望能够在开始日期和结束日期之间的几天内将一个预订链接到不同房间。 – schwift 2010-07-12 09:39:58