2011-03-03 8 views
19

Estoy usando el complemento del dispositivo en mi nueva aplicación Rails 3. Mi problema es idear plugin tiene raíces predeterminados de inicio de sesión y registroCómo cambiar las URL de inicio de sesión y de registro en el complemento Rails3

/users/sign_in 
/users/sign_up 

Necesito cambiar esto a

/login 
/signup 

Para ello he utilizado el siguiente enrutamiento

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

Con esto necesito especificar 'login_path' y 'signup_path' en todas partes en mis vistas donde new_user_session_path y new_user_registration_path viene

Lo que quiero es una configuración en las rutas que mapea '/ login' y '/ signup' a new_user_session_path y new_user_registration_path.

He visto una publicación que enruta/users/sign_in y/users/sign_up a/sign_in y/sign_up usando el enrutamiento mostrado a continuación.

devise_for :user, :as => '' 

Necesito alguna técnica de enrutamiento como ésta, que rutas/usuarios/sign_in y/usuarios/sign_up a/login y/registro.

¿Alguien podría ayudarme con esto?

ACTUALIZACIÓN: He cambiado mi archivo 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 

Pero aún cuando uso link_to 'new_user_registration' en mi punto de vista no es mostrando como '/ registro' en el navegador

Respuesta

32

Aquí son un poco más opciones que usted pidió pero está claro:

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 

Aún más, la :registrations => "users/registrations" podemos personalizar, además, redirecciones:

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 tiene una buena wiki.

+0

Gracias amigo. Mi '/ iniciar sesión en trabajar bien. Pero '/ signup' no está mapeando a 'new_user_registration_path'. Agregué tu código en mis rutas. ¿Debo agregar algo más? –

+0

Es porque tengo el controlador de registros personalizado como he mostrado anteriormente. Aquí hay un lugar 'get"/signup "=>" users/registrations # new "' donde puedes cambiar 'users' to' idear' y eliminar ': registrations =>" users/registrations "' from ': contorllers' hash . – Voldy

+0

devise_for: users, : controllers => {: sessions => 'idear/sessions'}, : skip => [: sessions] do get '/ login' => "idear/sesiones # nuevo",: as =>: new_user_session post '/ login' => 'idear/sessions # create',: as =>: user_session get '/ signout' => 'idear/sessions # destroy',: as =>: destroy_user_session get "/ signup" => "idear/registros # nuevo",: as =>: new_user_registration final pero cuando uso link_to 'new_user_registration' en mis vistas no se muestra como '/ signup' –

0

Si leo y entiendo su pregunta correctamente, está buscando la 'coincidencia'.

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

Asegúrese de tenerlos en el orden correcto, ya que coinciden en función de los números de línea en el archivo.

más se puede encontrar en: http://guides.rubyonrails.org/routing.html

+0

Usando este enrutamiento, necesito especificar '/ login' y '/ signup' en mis vistas. De modo que hacer clic en el enlace lleva a la página de inicio de sesión y registro. Lo que estaba buscando es que el complemento de diseño tiene un enlace a la página de registro <% = link_to "signup", new_user_registration_path%> haciendo clic en este enlace, la url en el navegador debe ser '/ signup'. Con el diseño del enrutamiento predeterminado, el enlace es como '/ users/sign_up'. Espero que tengas mi problema. Por favor ayuda –

3

pude arreglar mi problema utilizando el siguiente código en mis rutas

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 

Pero todavía en mi punto de vista si uso

link_to "Register", new_user_registration_path 

En mi navegador se muestra como

/user/sign_up and not as /signup 

Pero si escribo/me registro directamente, obtendré la página de registro.¿Hay algún mapeo que necesite hacer aquí?

2

espero que no estoy demasiado tarde;)

aquí es ¿Cómo funciona (sólo pegarlo en su routes.rb y bueno para ir):

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

editar config/rutas .rb

devise_for: usuarios, ruta: ''

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 
Cuestiones relacionadas