2009-03-29 7 views
0

J'essaie de configurer un assistant de création d'utilisateur dans lequel l'utilisateur ne peut accéder qu'à la page correspondant à l'étape en cours dans l'assistant sur lequel se trouve l'utilisateur.Rails itinéraires conditionnels

J'ai déjà trié les fonctionnalités de la machine d'état. L'état actuel est stocké dans le DB. Ce n'est pas le problème

Le problème est de savoir comment rediriger l'utilisateur vers la bonne page.

J'ai d'abord essayé un filtre avant mais cela a abouti à une boucle de redirection. La solution pour cela était désordonnée.

La prochaine chose que j'ai essayé est d'utiliser redirect_to pour envoyer la requête à une action qui redirige ensuite vers la bonne page. Cela a entraîné un DoubleRenderError parce que je redirige deux fois. Je pensais que redirect_to était une nouvelle requête http, mais il semble que ce ne soit pas le cas.

Je me demande maintenant s'il est possible de configurer directement ce type de fonctionnalité dans les routes. J'aurai besoin d'avoir accès à la base de données pour obtenir l'état actuel. Je n'ai aucune idée de comment cela est fait ou si c'est même possible

Des idées?

Merci

Répondre

2

Je ne sais pas si je comprends tout à fait votre question. Toutefois, la raison pour laquelle vous avez obtenu une erreur de rendu double est due au fait qu'un code plain redirect_to ruby ​​a continué à être exécuté. À un certain point, ce code a tenté de restituer des données (d'où le DoubleRenderError).

Vous pouvez utiliser:

redirect_to [...] and return false 

Cela permettra d'éviter tout code plus tard d'être exécuté et donc empêcher une DoubleRenderError.

Bonne chance!

0

Je pense que cette question est la même chose que j'ai vécu hier (Im on Rails 2.1), ma solution se trouve ici sur my blog, it's really simple !

0

je suppose, ce approach de :constraints => définition peut être exactement ce que vous cherché