2010-07-11 27 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