2009-09-11 5 views
3

J'ai une table html qui se compose de colonnes pour les jours, et les lignes pour les heures de la journée. J'ai l'intention que ce soit un widget UI, similaire au sélecteur de date de calendrier communément vu.Créer une nouvelle réservation via une URL reposante?

En cliquant sur une cellule particulière de la table, vous sélectionnez cette date et l'heure pour créer une nouvelle réservation.

Je considérais en utilisant une URL pour représenter cette sélection tels que,

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

ou

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

Est-ce une approche valable?

J'ai lu un peu sur le repos, mais je ne comprends toujours pas, sauf pour l'exemple évident utilisé pour montrer comment modifier un enregistrement de blog. par exemple. blog/posts/23/edit

Actuellement, lorsque vous jouez avec l'application, je saisis les détails via des champs de formulaire, mais le widget de sélection date-heure rendra les choses beaucoup plus faciles à utiliser.

Le plan (actuel) consiste à afficher une série d'URL pour les heures disponibles. Si un emplacement est déjà réservé, aucune URL n'est rendue. Bien sûr, je validerais également l'entrée. Pour commencer, je vais supposer qu'un emplacement d'une heure est tout ce qui peut être réservé.

Je constate que les sites Web tels que les compagnies aériennes ont tendance à afficher une série d'URL avec un code unique. Je pense que cela nécessite une session pour garder une trace de ces identifiants uniques.

Je cherche des conseils sur l'approche car je n'ai pas conçu quelque chose comme ça avant et il est principalement conçu comme une expérience d'apprentissage.

Merci

+0

+1 pour appeler votre ordinateur 'jupiter' :-) mine sont appelés mercure, vénus, terre, mars, jupiter et Sedna. –

Répondre

3

Je dirais que vous compliquez un peu les routes RESTful. Un URI REST met l'accent sur le travail avec les ressources. Une réservation est une ressource. Une date, à mon humble avis, ce n'est pas. Il est surtout un param, et donc, vous devriez travailler avec quelque chose comme:

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

Bien, je vais essayer de les envoyer à l'aide d'une méthode POST (http://jupiter.local/reservations/new)

Dans les deux cas, le contrôleur travailler avec params [: réservation] [: date], params [: reservartion] [: heure de début], etc.

C'est une approche plus simple.Avec cela, je suppose que ce sont des attributs mappés à une table. Si ce n'est pas le cas, vous pouvez facilement créer des attributs "virtuels" pour le modèle avec la phrase

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

. Si vous envoyez ceci via AJAX (ce que j'imagine que vous utiliseriez dans votre description), Rails ajoutera une chaîne d'authentification, et vous pouvez également ajouter votre ID de session (bien que je pense qu'il l'ajoute aussi).

Si vous avez besoin d'autres idées, assurez-vous de mettre à jour votre question :)

+0

Merci pour votre réponse Yaraher. Je vais examiner cela et fournir une mise à jour dans les prochains jours. –

0

Je pense que tant que vous associez vos actions de contrôleur aux verbes corrects http vous êtes sur la bonne voie. Certains de mes contrôleurs n'implémentent pas tous les verbes et certains verbes de surcharge des contrôleurs - pas une énorme affaire.

Je pense que vous voulez juste rendre l'action new un peu plus sensible au contexte. Par exemple, disons que vous voulez utiliser /reservations/new avec ou sans paramètres. Si les paramètres sont passés, vous pouvez masquer le sélecteur de date/heure de début et remplir les valeurs dans hidden field s. Si les paramètres ne sont pas passés, vous affichez le sélecteur de date/heure de début. Vous pourriez probablement utiliser la même action de contrôleur (nouvelle) mais rendre différentes versions de la vue en fonction des paramètres.

+0

Merci Andy, je vais essayer de lire à ce sujet. –

Questions connexes