tutorial signup sign_in rails method instalar example ejemplos ruby-on-rails ruby-on-rails-3 devise

ruby on rails - signup - Idear: Página de inicio de sesión como Bienvenida/Página de destino y luego Perfil de usuario



devise wiki (5)

En la página raíz, compruebe si el usuario inició sesión y redireccione en función de eso.

redirect_to sign_up_path if current_user.nil?

Alternativamente, podría renderizar diferentes plantillas en lugar de una redirección, pero creo que es más limpio tener una correspondencia de 1: 1 entre urls y páginas.

Usando el diseño, ¿cómo hago que mi suscripción sea mi página de inicio / recepción y luego, después de registrarme, ingresen al sitio en el perfil / área de inicio de sesión?

Estoy tratando de averiguar cómo hacer que Facebook sea un lado del sitio; el exterior (registro, acerca, contacto, etc.) y el interior (perfil, cierre de sesión, etc.) para los usuarios solo después de registrarse o iniciar sesión.

Gracias.

PD: Soy nuevo en Ruby on Rails y creo aplicaciones, pero hice el sistema de autenticación con el Tutorial de Rails 3, entiendo la mayoría de las cosas para comenzar a usar Devise, no sé por dónde empezar con esta situación.

Iba a usar 2 diseños de aplicaciones, 1 antes de iniciar sesión, que es layouts / welcome.html.erb con PagesController (acerca de, términos, etc.) y el otro para usuarios registrados que serán layouts / application.html.erb con ApplicationController (perfil, noticias, agregar, etc.), ¿son estos los mejores pasos?


Encuentro que es más fácil rootear a la página de inicio autenticada deseada y solo uso un before_filter para forzar al usuario a iniciar sesión / registrarse primero a través de un before_filter.

En este caso, digamos que su "área de inicio de sesión" es un controlador / acción llamada perfil / índice.

En su routes.rb, establezca la raíz en el perfil / índice.

root :to => ''profile#index''

Luego, en su controlador_perfil, configure lo siguiente before_filter.

before_filter :authenticate_user!

Esto automáticamente empujará a un usuario conectado (o uno que haya iniciado sesión anteriormente y haya configurado una cookie Recordarme) directamente a la página de perfil. Cualquier usuario no autenticado terminará automáticamente al iniciar sesión. También querrá un enlace (o pestaña separada) en esa página para registrarse.


en tus rutas.rb:

root :to => ''welcome#index''

Donde bienvenido es el controlador y el índice es la acción.

En su controlador de aplicación:

def after_sign_in_path_for(user) "/url_you_want_to_redirect_to/" end


Otro enfoque es modificar el diseño. Edite devise_gem_path / lib / devise / failure_app.rb y reemplace las dos instancias en el método redirect_url de:

:"new_#{scope}_session_path"

con:

:"new_#{scope}_registration_path"

Una solución menos destructiva haría que la respuesta de redirect_url fuera más configurable.


Esta es mi nueva y actualizada forma de usar Rails 3.1.0 y Devise 1.5.0 :

routes.rb

root :to => "pages#redirect_to_sign_up" devise_for :users do get "welcome" => "devise/registrations#new", :as => :new_user_registration get "account_settings" => "devise/registrations#edit" get "sign_in" => "devise/sessions#new" get "sign_out" => "devise/sessions#destroy" get "new_password", :to => "devise/passwords#new" end match ''home'', :to => "user_pages#home" namespace :user do root :to => "user_pages#home" end

application_controller.rb

class ApplicationController < ActionController::Base protect_from_forgery protected def after_sign_in_path_for(resource) stored_location_for(:user) || root_path end private def after_sign_out_path_for(resource) stored_location_for(:user) || root_path end end

pages_controller.rb

class PagesController < ApplicationController def redirect_to_sign_up if signed_in?.blank? redirect_to new_user_registration_path else redirect_to home_path end end end

user_pages_controller.rb

class UserPagesController < ApplicationController before_filter :authenticate_user! def home end def profile end end