Создать новое бронирование через релакс-URL? - PullRequest
3 голосов
/ 11 сентября 2009

У меня есть HTML-таблица, которая состоит из столбцов для дней и строк для часов дня. Я предполагаю, что это будет виджет пользовательского интерфейса, подобный общепринятому календарному календарю.

При нажатии на конкретную ячейку таблицы будет выбрана эта дата и время для создания нового бронирования.

Я подумывал об использовании URL для представления этого выбора, например,

http://jupiter.local/reservations/new/2009-09-10/1200/1300

или

http://jupiter.local/reservations/new/date/2009-09-10/start-time/1200/end-time/1300

Это правильный подход?

Я немного прочитал об отдыхе, но до сих пор не понимаю, за исключением очевидного примера, показывающего, как редактировать запись в блоге. например блог / сообщений / 23 / редактировать

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

(Текущий) план состоит в том, чтобы вывести серию URL для доступных часов. Если слот уже забронирован, то URL не отображается. Конечно, я бы также подтвердил ввод. Для начала я предположу, что все, что можно забронировать, это один час.

Я вижу, что такие сайты, как авиакомпании, обычно выдают серию URL с уникальным кодом. Я ожидаю, что это требует сеанса для отслеживания этих уникальных идентификаторов.

Я ищу руководство по подходу, так как раньше я не проектировал что-то подобное, и это в первую очередь предназначено для обучения.

Спасибо

Ответы [ 2 ]

3 голосов
/ 12 сентября 2009

Я бы сказал, что вы немного усложняете маршруты RESTful. REST URI делает акцент на работе с ресурсами. Резервирование - это ресурс. Дата, ИМХО, это не так. В основном это param, и поэтому вы должны работать с чем-то вроде:

http://jupiter.local/reservations/new/?date=2009-09-10&start-hour=1200&end-hour=1300

Хотя я бы попытался отправить их методом POST (http://jupiter.local/reservations/new)

В любом случае контроллер будет работать с параметрами [: резервирование] [: дата], параметры [: резервирование] [: время начала] и т. Д.

Это более простой подход.

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

attr_accessor :date, :start-hour, :end-hour

предложение.

Если вы отправите это через AJAX (который, я думаю, вы используете из вашего описания), Rails добавит строку аутентификации, и вы также можете добавить свой идентификатор сессии (хотя я думаю, что он также добавляет его).

Если вам нужно больше идей, обязательно обновите свой вопрос:)

0 голосов
/ 11 сентября 2009

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

Я думаю, вы просто хотите сделать действие new чуть более контекстно-зависимым. Например, допустим, вы хотите, чтобы /reservations/new работал с параметрами или без них. Если параметры передаются, вы можете скрыть стартовую дату / время и вставить значения в скрытое поле s. Если параметры не передаются, вы показываете стартовую дату / время выбора. Возможно, вы могли бы использовать одно и то же действие контроллера (новое), но отображать разные версии представления на основе параметров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...