2011-04-28 2 views
2

Comment puis-je utiliser la route racine dynamique si elle dépend de ... la météo, l'heure actuelle, ou autre chose?Route du chemin racine dynamique

J'ai pensé à deux façons: le niveau ApplicationController et la redirection Rack.

  • Avec la première solution je vais vérifier mon état dynamique et rediriger vers une page particulière.
  • Deuxième solution est un peu plus natif dans la mesure où il utilise le niveau des routes

Par exemple

root :to => proc { |env| [ 302, {'Location'=> some_code }, [] ] } 

Mais ce que je souhaite voir comment puis-je utiliser lambda simple pour l'option d'itinéraire comme:

root :to => "mycontroller#myaction", :some_param => proc{ DateTime.now.hour } 

il ne fonctionne pas, mais il montre mes attentes

Répondre

1

Je ne sais pas pourquoi vous auriez besoin d'initialiser un paramètre dans la table de routage quand pourrait être fait la même chose dans le contrôleur:

params[:some_param] = DateTime.now.hour 

Vous pouvez également faire la redirection à l'intérieur du contrôleur au besoin au lieu de se pencher si fortement sur la table de routage en utilisant la méthode redirect_to.

+0

En fait, c'est comme ça que je cours maintenant: rediriger dans le contrôleur. Mais cela change aussi une URL dans le navigateur et cela ne ressemble pas à quelque chose d'indigène. Je veux juste dire à Rails dans les itinéraires: ces itinéraires sont root à la soirée et celui-ci est pour le matin :). – fl00r

+0

Vous pouvez avoir une méthode de contrôleur qui appelle l'une des deux actions différentes en fonction de l'heure de la journée. Ce serait beaucoup plus facile. – tadman

Questions connexes