2012-02-18 14 views
11

Quiero mostrar una página raíz diferente para los usuarios en Rails.Página diferente para el usuario que inició sesión y el usuario que no inició sesión en la raíz

que define la raíz:

root :to => 'welcome#index' 

y el control de bienvenida:

class WelcomeController < ApplicationController 
    before_filter :authenticate_user! 

    def index 
    end 

end 

Actualmente está bien para los usuarios registrados, pero el no conectado en usuarios redirigidos a/usuarios/sign_in

Quiero mostrar la página raíz estática y no redirigir.

+1

Retire su before_filter y añadir su lógica en el método del índice para determinar lo que desea mostrar en función de si se registran en ¿Está utilizando idear ? –

+0

@MarcTalbot sí, ¿es posible implementar en routes.rb? –

+1

Esta pregunta exacta ha sido respondida aquí http://stackoverflow.com/questions/8888289/rails-3-w-devise-how-to-set-two-separate-homepages-based-on-whether-the-user- i/8888513 # 8888513 –

Respuesta

2

Esta respuesta debería funcionar. Esto fue publicado en la página enlazada por Bradley.

Pon esto en su controlador de bienvenida.

def index 
    if authenticate_user? 
    redirect_to :controller=>'dashboard', :action => 'index' 
    else 
    redirect_to '/public/example_html_file.html' 
    end 
end 
2

En su routes.rb:

authenticated do 
    root :to => 'welcome#index' 
end 

root :to => 'home#static_page' 

Esto asegurará que root_url para todos los usuarios autenticados es welcome#index

Para su referencia: https://github.com/plataformatec/devise/pull/1147

+0

Esto no funciona en los carriles 4 más, tratar: autenticado: el usuario haga raíz a: 'tablero índice #', como:: authenticated_root final raíz a: 'landing_page # index', como:: public_root – ardochhigh

23

La respuesta, sugerida por Puneet Goyal se no funciona en Rails 4. Ver this. La solución es utilizar un alias para una de las dos rutas como esta:.

authenticated do 
    root :to => 'welcome#index', as: :authenticated 
end 

root :to => 'home#static_page' 
+1

José Valim discute esta solución en un problema de Devise [aquí] (https://github.com/plataformatec/devise/issues/2393#issuecomment-17298414) –

Cuestiones relacionadas