Создание календаря с Синатрой - PullRequest
2 голосов
/ 11 июля 2010

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

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

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

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

1 Ответ

3 голосов
/ 11 июля 2010

Я бы начал с проектирования баз данных.Каковы ваши центральные столы?Как они включают временные данные?Допустим, у вас есть список 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}"}
  =@date-1
%span
  =@date
%a{:href => "/rooms/#{@date + 1}"}
  =@date+1
...