2011-01-16 8 views
5

voglio tutte le mie pagine nella mia applicazione 2.3 Rails per avere l'URL prefisso:gli URL prefisso applicazione Rails

www.example.com/app/ 

e ho fatto questa scrittura in routes.rb le seguenti righe:

# I named the first part of the url ':appl' 
map.root :appl => "app", :controller => "home" 

# Default routes 
map.connect ':appl/:controller/:action/:id' 
map.connect ':appl/:controller/:action/:id.:format' 

funziona tutto bene, con l'eccezione di map.resources, dove ho

map.resources :pages 

e ora ovunque io abbia edit_page_path o page, l'URL generato non è corretto, perché app non è inserito all'inizio. Ho provato con namespace e scope, come ho visto here in chapter 2.6, ma senza successo.

Come devo fare? Lo :appl nelle rotte è una cattiva idea?

risposta

0

Ecco come ho scritto nel routes.rb:

map.resources :pages, :as => 'app/pages' 

Ora, edit_page_path e altri restituiscono la strada giusta, con prefisso 'app'

6

Se si distribuisce su passeggeri, è sufficiente impostare (nella configurazione server web):

RailsBaseURI /app

E poi in config della tua app:

config.action_controller.relative_url_root = '/app' 

Non si dovrebbe devi preoccuparti di qualsiasi roba sub-uri oltre a questo. Dovrebbe funzionare. Vedere lo Passenger documentation per ulteriori dettagli.

Per bastardo, è possibile utilizzare l'opzione --prefix

script/server mongrel -P /app 
+0

Non sto utilizzando Passenger. –

+0

Qual è il tuo stack di distribuzione? Potrebbe esserci una soluzione disponibile lì. –

+0

- Io uso Mongrel. –