Question

Je suis coincé à trouver les meilleures pratiques ...

Je souhaite créer un système "suivant" d'une manière qu'un utilisateur peut suivre une voiture (obtenir des mises à jour par e-mail lorsque le prix de la voiture change, etc.). La partie de la mise en œuvre qui me donne des maux de tête, c'est quand je veux introduire l'inscription paresseuse en utilisant uniquement le courrier électronique.

Tout a besoin de travailler comme ajax demandes.

Dans l'interface, il y aura un bouton pour déclencher l'action de suivi, qui vérifiera si l'utilisateur est enregistré ou non. Si un utilisateur est connecté, créez un nouveau CarSubscription Article, autrement afficher un formulaire où il pourrait taper son adresse e-mail. Une fois soumis, le formulaire doit créer un utilisateur sans mot de passe (si l'e-mail existe, demandez le mot de passe et se connectez-vous), puis il doit créer l'élément de relation.

Le défi ici est d'utiliser la redirection après la soumission du formulaire CREATE action du CarSubscriptionController. Puisque je ne peux pas rediriger en utilisant POST Je ne peux pas simuler le CREATE ou DESTROY action.

La solution non re-rassure serait de créer 2 actions sous cars_controller: Suivez et désabonnez et laissez-les faire la logique de créer des entrées et de les supprimer. Cela me permettrait de simplement stocker le chemin de la demande et de l'utiliser après que l'utilisateur entre dans leur e-mail et se connecte.

Comment puis-je réaliser ce que je veux utiliser des ressources reposantes?

Après avoir essayé de décrire mon problème ici, il semble que ce soit trop compliqué et je suis en effet très coincé ... il y a 3 contrôleurs différents et peut-être 4 demandes dans ce scénario.

Toute aide serait extrêmement appréciée!

Veuillez consulter mon organigramme ci-dessous:flow chart of follow action

Était-ce utile?

La solution

Pas un expert ici, je ne sais pas si c'est la meilleure solution, mais ce que j'ai fait dans une situation similaire, c'est:

  1. Dans votre contrôleur, répondez avec JavaScript au lieu de rediriger l'utilisateur
  2. Dans votre fichier javascript, utilisez $.post(...) pour émettre un POST à votre action de contrôleur
  3. Et voilà!

Vous pouvez également utiliser ActiveResource pour y parvenir, mais je n'ai jamais essayé cette solution: http://api.rubyonrails.org/classes/activesource/base.html#label-custom+rest+Methods

Person.new(:name => 'Ryan').post(:register)

J'espère que cela t'aides

Autres conseils

J'ai eu un besoin très similaire et j'ai eu du mal à tirer les différentes informations sur la façon de procéder avec Disget et Rails ensemble dans un exemple de travail. Voici un exemple entièrement fonctionnel basé sur Rails 4, Ruby 2 et Devise 3.0:

https://github.com/mwlang/lazy_registration_demos

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top