2010-11-02 16 views
10

Wie ist es möglich, Bindestrich in Ressourcen URLs zu verwenden? Zum Beispiel: /my-model/ oder /my-model/1. Wenn ich eine Route als resources :"my-model" definiere, erhalte ich einen Syntaxfehler, weil rails die Methode def hash_for_my-models_url(options = nil) generiert.Bindestrich Ressourcen in Schienen 3 Routen

+0

mögliche Duplikate von [In Ruby on Rails Routing Ich möchte Dash verwenden \ - \ 'anstelle von Underscore \' \ _ \ '] (http://stackoverflow.com/questions/5334465/in-ruby- on-rails-routing-i-möchte-wie-benutze-dash-statt-von-unterstreichen) –

Antwort

14

ich die Lösung gefunden zu haben :

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

UPDATE: Wie Timo Saloranta im Kommentar sagte, funktioniert es ohne :controller => :my_models in den neuesten Rails 3-Versionen.

+1

Ich denke, das funktioniert auch (Unterschied wäre in der Benennung von Route Helfer): 'Ressourcen: product_types,: Pfad => '/ Produkt-Typen'' – sandstrom

+3

Es funktioniert ohne den ** Controller * * Teil mit den neuesten Rails 3-Versionen. –

0

Haben Sie eine benutzerdefinierte Route versucht?

Dies würde die 'read'-Methode von' my-model-controller.rb 'aufrufen.

+0

Ja, es ist eine offensichtliche Lösung, aber es ist interessant, wie es möglich ist, Bindestrich-Routen mit Ressourcen zu definieren. –

2

können Sie verwenden, um die :as Option einfalls Routen mit Bindestrichen URLs zu konfigurieren:

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

Ergebnisse in

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

... etc ...

+0

Ich habe das schon gemacht. Ich erhalte den gleichen Fehler wie bei der Verwendung eines Bindestrich-benannten Modells. –

+0

Auch wenn Sie eine Zeichenfolge in Anführungszeichen anstelle eines Symbols verwenden? – zetetic

+0

Ja ... Es war das erste, was ich danke .. –