2010-05-07 6 views
1

Je développe une application dans Rails 3 en utilisant une base de données nosql. J'essaie d'ajouter une fonction "Follow" similaire à twitter ou github.Dois-je utiliser une ancre, un bouton ou un formulaire Soumettre pour la fonction "Suivre" dans les rails

En termes de balisage, j'ai déterminé qu'il y a trois façons de le faire.

1) Utilisez une ancre régulière. (Github utilise cette méthode)

<a href="https://stackoverflow.com/users/follow?target=Joe">Follow</a> 

2) Utilisez un bouton. (Twitter utilise cette méthode)

<button href="/friendships/create/">Follow</button> 

3) Utilisez un formulaire avec un bouton d'envoi. (A quelques avantages pour moi, mais je l'ai vu personne le faire encore.)

<form method="post" id="connection_new" class="connection_new" action="https://stackoverflow.com/users/follow"> 
<input type="hidden" value="60d7b563355243796dd8496e17d36329" name="target" id="target"> 
<input type="submit" value="Follow" name="commit" id="connection_submit"> 
</form> 

Comme je veux stocker le user_id dans la base de données et non le nom d'utilisateur, les options 1 et 2 me forcer à faire une requête de base de données pour obtenir le user_id réel, alors que l'option 3 me permettra de stocker le user_id dans un champ de formulaire caché de sorte que je n'ai pas à faire de recherche de base de données. Je peux juste obtenir l'ID du hachage params sur la soumission de formulaire.

J'ai réussi à faire fonctionner chacune de ces méthodes, mais j'aimerais savoir quelle est la meilleure façon de procéder. De quelle manière est-il plus sémantique, sécurisé, meilleur pour les araignées, etc ...? Y a-t-il une raison pour que twitter et github n'utilisent pas de formulaires pour faire cela?

Toute aide serait appréciée. Je penche pour l'utilisation de la méthode formulaire depuis lors, je n'ai pas besoin d'interroger la base de données pour obtenir l'identifiant de l'utilisateur, mais je suis inquiet qu'il y ait une raison pour que les grands utilisent des ancres ou des boutons. Je suis un newb alors allez-y doucement si je manque totalement quelque chose. Merci!

+0

Comment est-ce une question de sécurité? A quelle attaque es-tu en train de te défendre? – rook

Répondre

1

C'est vraiment basé sur vos préférences personnelles. L'étiquette d'ancrage simple est agréable et facile, montre une intention claire, et est agréable et concise. Vous pouvez simplement créer une demande de publication AJAX avec Javascript pour que tout se passe rapidement. L'opération de base de données ne devrait pas être un problème. Même si cela finira par être trop lent (bien que j'en doute), je dirais que vous faites probablement une optimisation prématurée.