2010-11-02 12 views
10

Come è possibile utilizzare il trattino nelle url delle risorse? Ad esempio: /my-model/ o /my-model/1. Se si definisce route come resources :"my-model", si verifica un errore di sintassi perché le rotaie generano il metodo def hash_for_my-models_url(options = nil).risorse trattino in rotaie 3 percorsi

+0

possibile duplicato di [In Ruby on Rails Routing Vorrei usare Dash \ '- \' Invece di Underscore \ '\ _ \'] (http://stackoverflow.com/questions/5334465/in-ruby- on-rail-routing-i-would-like-to-use-dash-invece-of-underscore) –

risposta

14

ho trovato la soluzione :

resources "my-models", :as => :my_models, :controller => :my_models 

UPDATE: Come ha detto Timo Saloranta nel commento, funziona senza :controller => :my_models nelle ultime versioni di Rails 3.

+1

Penso che funzioni anche questo (la differenza sarebbe nella denominazione degli helper del percorso): 'resources: product_types,: path => '/ product-types' – sandstrom

+3

Funziona senza il ** controller * * parte con le ultime versioni di Rails 3. –

0

Hai provato un percorso personalizzato?

map.connect "/my-model/:id", :controller => 'my-model-controller', :action => 'read' 

Questo invocherebbe il metodo "read" di "my-model-controller.rb".

+0

Sì, è una soluzione ovvia ma è interessante come è possibile definire i percorsi di trattino usando le risorse. –

2

È possibile utilizzare l'opzione :as per configurare percorsi di risorse con gli URL con trattino:

map.resources :my_model, :as => "my-model" 

risultati in

my_model_index GET /my-model(.:format) {:action=>"index", 
    :controller=>"my_model"} 

... ecc ...

+0

Ho già cercato di farlo. Ottengo lo stesso errore di quando sto usando il modello con il nome del trattino. –

+0

Anche quando si utilizza una stringa quotata anziché un simbolo? – zetetic

+0

Sì ... È stato il primo che ringrazio .. –

Problemi correlati