2009-05-11 12 views
2

Wenn iServer-Präfix und Schienen Routen

script/server --path=/myapp 

den Server mit der Option Pfad bin ab, während eine Route mit

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

dann

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

einen Fehler auslöst „Nein route matched ... "

Frage: Wie kann ich das integrierte Routing von Rails mit dem Pfadpräfix erkennen? Vielen Dank!

Antwort

0

Es gibt tatsächlich eine PATH_PREFIX für Routen zur Verfügung, so dass Sie etwas tun können:

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

, dass Sie einen Weg geben sollte/myapp/foo

2

Versuchen config.action_controller.relative_url_root = "/myapp" in environments.rb setzen und Starten Sie Ihren Server normal.

Dann Rails anhängen/myapp/auf alle Ihre Routen

0

vielen Dank für Ihre Antworten!

Leider kann ich die :path_prefix Option in map.foo nicht verwenden, weil es nicht immer der Fall ist (der Endbenutzer sollte verantwortlich sein für die Einstellung oder nicht das Präfix, während keine über Routen beunruhigend).

i fingerte aus folgenden:

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'}