2011-03-03 7 views
19

Sto utilizzando il plug-in di dispositivo nella mia nuova App di Rails 3. Il mio problema è ideare plugin ha radici di default per il login e registrazioneCome modificare gli URL di accesso e registrazione nel plugin di sviluppo Rails3

/users/sign_in 
/users/sign_up 

ho bisogno di cambiare questo per

/login 
/signup 

Per questo ho usato il seguente instradamento

devise_for :users do 
    get "login", :to => "devise/sessions#new" 
    get "signup", :to => "devise/registrations#new" 
end 

Con questo ho bisogno per specificare 'login_path' e 'signup_path' ogni dove nelle mie viste dove new_user_session_path e new_user_registration_path arriva

Quello che voglio è una configurazione nei percorsi che mappa '/ login' e '/ signup' a new_user_session_path e new_user_registration_path.

Ho visto un messaggio che indica route/users/sign_in e/users/sign_up a/sign_in e/sign_up utilizzando il routing mostrato di seguito.

devise_for :user, :as => '' 

ho bisogno di qualche tecnica di routing come questo, che percorsi/utenti/sign_in e/utenti/sign_up a/login e/iscrizione.

Qualcuno potrebbe aiutarmi con questo.

UPDATE: ho cambiato il mio file routes.rb a

devise_for :users, 
     :controllers => { :sessions => 'devise/sessions'}, 
     :skip => [:sessions] do 
     get '/login' => "devise/sessions#new", :as => :new_user_session 
     post '/login' => 'devise/sessions#create', :as => :user_session 
     get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session 
     get '/signup' => 'devise/registrations#new', :as => :new_user_registration 
    end 

Ma ancora quando uso link_to 'new_user_registration' nel mio punto di vista la sua non è che mostra come '/ iscrizione' nel browser

risposta

32

Qui sono un po 'più opzioni di quanto hai chiesto, ma è chiaro:

devise_for :users, 
      :controllers => { :registrations => "users/registrations", 
           :confirmations => "users/confirmations", 
           :sessions => 'devise/sessions'}, 
      :skip => [:sessions] do 
    get '/signin' => "devise/sessions#new",  :as => :new_user_session 
    post '/signin' => 'devise/sessions#create', :as => :user_session 
    get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session 
    get "/signup" => "users/registrations#new", :as => :new_user_registration 
    end 

Ancor più, con :registrations => "users/registrations" possiamo inoltre personalizzare redirect:

class Users::RegistrationsController < Devise::RegistrationsController 
    protected 

    def after_sign_up_path_for(resource) 
    welcome_path # it's not a home path 
    end 

    def after_update_path_for(resource) 
    edit_user_registration_path 
    end 
end 

Devise ha un buon wiki.

+0

Grazie amico. Il mio '/ signin' funziona bene. Ma '/ signup' non sta mappando a 'new_user_registration_path'. Ho aggiunto il tuo codice nei miei percorsi. Devo aggiungere altro. –

+0

È perché ho un controller delle registrazioni personalizzato come ho mostrato sopra. Ecco un luogo 'get"/signup "=>" users/registrations # new "' dove puoi cambiare 'users' in' devise' e ​​rimuovere ': registrations =>" users/registerations "' da ': contorllers' hash . – Voldy

+0

devise_for: users, : controller => {: sessions => 'escogita/sessioni'}, : skip => [: sessioni] do get '/ login' => "escogita/sessioni # nuovo",: come =>: new_user_session post '/ login' => 'devise/sessions # create',: come =>: user_session get '/ signout' => 'escogita/sessioni # destroy',: come =>: destroy_user_session get "/ signup" => "devise/registrations # new",: as =>: new_user_registration fine, ma quando uso link_to 'new_user_registration' nelle mie viste non viene mostrato come '/ signup' –

0

Se sto leggendo e comprendendo correttamente la tua domanda, stai cercando "partita".

devise_for :users 
match "/login" => "devise/sessions#new" 
match "/signup" => "devise/registrations#new"

Assicurarsi di averli nel giusto ordine in cui sono abbinati in base a numeri di riga nel file.

Maggiori informazioni possono essere trovate all'indirizzo: http://guides.rubyonrails.org/routing.html

+0

Utilizzando questo routing, devo specificare '/ login' e '/ signup' nelle mie viste. In modo che facendo clic sul link prende per accedere e la pagina di registrazione. Quello che stavo cercando è che il plugin di devise abbia un link alla pagina di registrazione <% = link_to "signup", new_user_registration_path%> facendo clic su questo link l'url nel browser deve essere "/ signup". Con il routing predefinito devise il link è come '/ users/sign_up'. Spero tu abbia avuto il mio problema. Per favore aiuto –

3

ero in grado di risolvere il mio problema utilizzando il seguente codice nei miei percorsi

devise_for :users, 
      :controllers => { :sessions => 'devise/sessions'}, 
      :skip => [:sessions] do 
    get '/login' => "devise/sessions#new",  :as => :new_user_session 
    post '/login' => 'devise/sessions#create', :as => :user_session 
    get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session 
    get "/signup" => "devise/registrations#new", :as => :new_user_registration 
    end 

Ma ancora nel mio punto di vista se uso

link_to "Register", new_user_registration_path 

Nel mio browser è mostrato come

/user/sign_up and not as /signup 

Ma se digito/iscrizione direttamente otterrò la pagina di registrazione.C'è qualche mappatura che devo fare qui.

2

Spero di non essere troppo tardi;)

ecco come funziona (basta incollarlo nel vostro routes.rb e buona per andare):

devise_for :users, :controllers => {:sessions => 'devise/sessions'}, :skip => [:sessions] do 
    get 'login' => 'devise/sessions#new', :as => :new_user_session 
    post 'login' => 'devise/sessions#create', :as => :user_session 
    get 'logout' => 'devise/sessions#destroy', :as => :destroy_user_session 
    get 'register' => 'devise/registrations#new', :as => :new_user_registration 
    end 
1

modificare config/percorsi .RB

devise_for: utenti, percorso: ''

devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'register', sign_up: 'cmon_let_me_in' } 

    new_user_session GET /login(.:format)       devise/sessions#new 
       user_session POST /login(.:format)       devise/sessions#create 
     destroy_user_session DELETE /logout(.:format)      devise/sessions#destroy 
       user_password POST /secret(.:format)      devise/passwords#create 
      new_user_password GET /secret/new(.:format)     devise/passwords#new 
      edit_user_password GET /secret/edit(.:format)     devise/passwords#edit 
          PATCH /secret(.:format)      devise/passwords#update 
          PUT /secret(.:format)      devise/passwords#update 
    cancel_user_registration GET /register/cancel(.:format)    devise/registrations#cancel 
      user_registration POST /register(.:format)      devise/registrations#create 
     new_user_registration GET /register/cmon_let_me_in(.:format)  devise/registrations#new 
     edit_user_registration GET /register/edit(.:format)     devise/registrations#edit 
          PATCH /register(.:format)      devise/registrations#update 
          PUT /register(.:format)      devise/registrations#update 
          DELETE /register(.:format)      devise/registrations#destroy 
Problemi correlati