2012-04-01 2 views
1

In meiner routes.rb Datei, die nur Einträge ich habe, sind:Rails 3 + Devise - Wie verschachtelte Ressourcen/Routen zur Arbeit gelangen?

devise_for :users, :path => "accounts" 

resources :users do 
    resource :profile 
end 

aber wenn ich „Rake Routen“ laufen kann ich sehen, dass es noch kartiert Ressourcen für den Benutzer, dh neu sind, erstellen, bearbeiten, aktualisieren etc ... dies ist ein Konflikt mit einigen der devise Pfade wie new_user_registration_path

 new_user_session GET /accounts/sign_in(.:format)   devise/sessions#new 
      user_session POST /accounts/sign_in(.:format)   devise/sessions#create 
    destroy_user_session DELETE /accounts/sign_out(.:format)   devise/sessions#destroy 
      user_password POST /accounts/password(.:format)   devise/passwords#create 
     new_user_password GET /accounts/password/new(.:format)  devise/passwords#new 
     edit_user_password GET /accounts/password/edit(.:format)  devise/passwords#edit 
         PUT /accounts/password(.:format)   devise/passwords#update 
cancel_user_registration GET /accounts/cancel(.:format)    devise/registrations#cancel 
     user_registration POST /accounts(.:format)     devise/registrations#create 
    new_user_registration GET /accounts/sign_up(.:format)   devise/registrations#new 
    edit_user_registration GET /accounts/edit(.:format)    devise/registrations#edit 
         PUT /accounts(.:format)     devise/registrations#update 
         DELETE /accounts(.:format)     devise/registrations#destroy 
      user_profile POST /users/:user_id/profile(.:format)  profiles#create 
     new_user_profile GET /users/:user_id/profile/new(.:format) profiles#new 
     edit_user_profile GET /users/:user_id/profile/edit(.:format) profiles#edit 
         GET /users/:user_id/profile(.:format)  profiles#show 
         PUT /users/:user_id/profile(.:format)  profiles#update 
         DELETE /users/:user_id/profile(.:format)  profiles#destroy 
        users GET /users(.:format)      users#index 
         POST /users(.:format)      users#create 
       new_user GET /users/new(.:format)     users#new 
       edit_user GET /users/:id/edit(.:format)    users#edit 
        user GET /users/:id(.:format)     users#show 
         PUT /users/:id(.:format)     users#update 
         DELETE /users/:id(.:format)     users#destroy 

verursacht wie kann ich die zusätzlichen User-Ressourcen loszuwerden, die am Ende der Ausgabe erscheinen?

Antwort

0

Wenn Sie nur wollen, sagen wir, Index und zeigen, versuchen:

devise_for :users, :path => "accounts", :only => [:index, :show] do 
    resource :profile 
end 
+0

Das Problem aussehen würde, ist, dass ich nur die devise erstellt Routen für die Nutzer wollen, gerade jetzt ihre ist ein Satz von Routen, von devise erstellt und ein anderer Satz erstellt von "resources: users". Wie kann ich die Routenpläne und das Map-Profil als geschachtelte Ressource beibehalten? – Jason

+0

Ich sehe. Bitte versuche meinen aktualisierten Code. –

+0

@Jason Ich habe das gleiche Problem mit einem doppelten Satz von Routen. Haben Sie eine Lösung gefunden? – lnreddy

0

Der beste Weg, dies zu tun wäre, um Ihre Devise (nicht verschachtelt) Routen zu definieren, mit ‚devise_for:‘ und dann in ein separater Block, tun

resources :users, :only => :none do 
    resource :profile 
end 

Mit ‚: außer =>: alle‘ aus allen nicht verschachtelten Users Routen stoppen definiert und überschreiben Ihre Devisen Routen, aber es schafft immer noch alle Ihre users/3/profile Routen. Dann :path => "accounts" hinzufügen zu ersetzen users

So Ihr Code wie

devise_for :users, :path => "accounts" 

resources :users , :path => "accounts", :only => :none do 
    resource :profile 
end 
Verwandte Themen