2010-06-15 10 views
6

In Rails 2 verwenden wir benutzerdefinierte new Aktionen einfalls Routen hinzufügen können, wie:individuelle Hinzufügen: neue Routen Rails 3 Routing

map.resources :users, :new => {:apply => :get} 

Wie erreichen wir die gleiche Sache in Rails 3?

resources :users do 

    get :apply, :on => :new # does not work 

    new do 
    get :apply    # also does not work 
    end 

end 

Irgendwelche Ideen?

Antwort

6

Sie können :path_names als explained im Edge-Routing-Handbuch verwenden:

resources :users, :path_names => { :new => "apply" } 

, die nur den Pfad zu apply ändern wird, wird es noch auf die Aktion new geroutet werden. Ich denke nicht, dass das Ändern explizit unterstützt wird (was wahrscheinlich eine gute Sache ist).

Wenn Sie Ihre apply Aktion behalten möchten, sollten Sie wahrscheinlich tun:

resources :users, :except => :new do 
    collection do 
    get :apply 
    end 
end 

Aber es lässt Sie sich fragen, ob es nicht besser ist, die apply Aktion new einfach zu umbenennen.

4

Versuchen Sie folgendes:

resources :users, :path_names => { :new => 'apply' } 

Beachten Sie, dass, wenn Sie die new Route zu apply für alle Strecken neu zuordnen möchten, dann können Sie einen Bereich verwenden:

scope :path_names => { :new => 'apply' } do 
    # The rest of your routes go here... 
end