2009-05-11 17 views
2

Quand je commence le serveur avec l'option de cheminpréfixe serveur et rails

script/server --path=/myapp 

tout en ayant une voie

map.route 'foo', :controller => 'bar', :action => 'buzz' 

puis

ActionController::Routing::Routes.recognize_path('/myapp/foo') 

déclenche une erreur « Non itinéraire correspondant ... "

Question: Comment puis-je faire routage intégré Rails reconnaître avec le préfixe de chemin? Merci beaucoup!

Répondre

0

Il est en fait un path_prefix disponible pour les routes afin que vous puissiez faire quelque chose comme ceci:

map.foo, 'foo', :controller => 'bar', :action => 'buzz', :path_prefix => 'myapp' 

Cela devrait vous donner un itinéraire pour/myapp/foo

2

Essayez de mettre config.action_controller.relative_url_root = "/myapp" dans environments.rb et démarrez votre serveur normalement.

Puis Rails ajouter/myapp/à tous vos itinéraires

0

Merci beaucoup pour vos réponses!

Malheureusement, je ne peux pas utiliser l'option :path_prefix dans map.foo, parce que ce n'est pas toujours le cas (l'utilisateur final devrait être responsable de définir ou non le préfixe sans se soucier des routes).

i doigter à la suite:

path = '/myapp/foo' 

if relative_url_root = ActionController::Base.relative_url_root 
    path.sub!(/\A#{relative_url_root}/i, '') 
end 

params = ActionController::Routing::Routes.recognize(path) 
# => {:controller => 'bar', :action => 'buzz'}