2010-07-11 6 views
2

Ну, я действительно не хочу делать календарь, но мне нужен вид для каждого дня года, который, как я думаю, является чем-то таким же. Скажем, у меня есть вид, где вы видите, например. «1 июля» в верхней части страницы, и у вас есть ссылки на день до и на следующий день. Под этим есть список - в моем примере - комнаты, и у них разные состояния - доступные или зарезервированные.Создание календаря с Sinatra

Как я могу сделать что-то подобное с помощью Sinatra и Datamapper? Я помещаю его в URL-адрес или какие у меня возможности?

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

Так что напомним. Я пытаюсь создать календарь, в котором каждый день вы получаете список того, что имеет состояние либо доступное, либо зарезервированное для каждого дня в году, но я не знаю, с чего начать.

ответ

3

Я бы начал с разработки базы данных. Каковы ваши центральные таблицы? Как они включают временные данные? Допустим, у вас есть список rooms. Тогда вам придется иметь другую таблицу (скажем room_reservations), каждая запись имеет start_date, end_date и room_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

+1

Ну, все зависит от того, насколько сложным вы хотите создать свое приложение, и планируете ли вы сразу начать комплекс или начать просто, и сделать его сложным по сравнению с итерациями (версии и т. Д.). В любом случае, то, что вы должны сделать первым, это 1) спроектировать свою базу данных. 2) спроектировать рабочий процесс вашего интерфейса. Рубиновое кодирование и маршрутизация Sinatra должны быть в самом конце. –

+0

Я думал о том, чтобы сделать это довольно простым для начала. Это может быть таблица, называемая комнатами, относящимися к разделу. Разумеется, в номерах есть несколько резерваций, но только на определенную дату. Или, возможно, лучше связать резервирование с несколькими комнатами. Я предполагаю, что каждая оговорка будет иметь дату начала и дату окончания, но я все же хочу иметь возможность связать одну броню в разных комнатах в дни между датой начала и датой окончания. – schwift

Смежные вопросы