2010-04-08 4 views
0

sur mon site web Je veux avoir un formulaire de connexion/inscription dans la fenêtre modale fait en utilisant facebox (plugin jQuery). Quoi de mieux:Rails + facebox + authlogic - comment?

  1. Créer une vue avec une méthode et un gabarit qui a la forme et référencer la facebox à cette vue.
  2. Créez un fichier HTML statique dans le répertoire public et référez-vous à la facebox sur cette page statique.

Ce que je veux réaliser est:

  • vérification facile (comme « nom d'utilisateur déjà pris », « confirmation de mot de passe ne correspond pas à un mot de passe » et des trucs comme ça).
  • facile soumettre et redirect

Je suis nouveau à Rails, je sais à peu près les formes de vérification dans Django, donc pour Django je choisirais probablement l'option 1, mais il est peut-être une autre chose en Ruby.

Répondre

1

Si vous souhaitez que la vérification revienne à la page d'inscription, vous devez en faire une page dynamique. L'autre problème avec une page statique dans le répertoire public est que vos liens deviennent tous codés en dur, donc si votre application vit de la racine du domaine (ex: example.com/app), les liens dans ce fichier statique peuvent être erronés . En outre, si vous avez besoin de déplacer vos images vers un hôte différent, vous perdez les avantages de l'image_tag. N'utilisez les ressources statiques que si vous savez que les choses ne changeront pas et que vous avez besoin de vitesse. Si vos pages dynamiques sont trop lentes, vous pouvez les mettre en cache, ou vous pourriez faire quelque chose de mal.

MISE À JOUR: (pour répondre le premier commentaire)

Vous ne pouvez pas utiliser les fonctions de rails pour construire vos URL lorsque vous êtes dans le dossier public. Si vous avez besoin d'URL générées par rails dans votre javascript, déclenchez-les à partir d'une page d'affichage de rails. En général, je ferai ce qui suit:

En application.html.erb dans la balise de tête:

<%= yield :headScripting %> 

Puis, dans la page d'affichage qui déclenche le javascript:

<% content_for :headScripting do %> 
    jQuery().ready(function() { 
     jQuery("#placeholder").load("<%= summary_model_path(@model) %>"); 
    }); 
<% end %> 

Cela chargerait le texte récapitulatif à partir de l'action du contrôleur de modèle summary. Cela pourrait probablement render :text => "summary" ou render :layout => false en fonction de vos besoins

+0

Comment puis-je faire référence à une page dynamique à partir de javascript? Je prévois d'utiliser jQuery pour cela, donc j'ajouterai mon gestionnaire d'événements dans application.js. – Vitaly