Estoy intentando configurar un formulario de inicio de sesión en mi página de inicio. Logré hacerlo siguiendo el WikiRails & Devise: Anular SessionsController
Excepto que, si las informaciones de inicio de sesión son incorrectas, se representa /devise/session/new.html.erb
. No quiero eso. Quiero que mi usuario sea redirigido al root_url
CON los errores en un mensaje flash.
Pude anular registrations_controller.rb
por otra característica pero anular sessions_controller.rb
me da un montón de problemas.
¿Qué voy a cambiar para hacer lo que quiero? Todavía quiero que el usuario sea redirigido al after_sign_in_path
si el inicio de sesión fue correcto. El controlador original es here
Hasta ahora, sé que tengo que hacer eso en mi routes.rb
devise_for :users, :controllers => { :registrations => "registrations", :sessions => "sessions" }
Y también configurar controller/sessions_controller.rb
class SessionsController < Devise::SessionsController
# GET /resource/sign_in
def new
resource = build_resource
clean_up_passwords(resource)
respond_with_navigational(resource, stub_options(resource)){ render_with_scope :new }
end
end
tengo la sensación de que Tengo que cambiar el render_with_scope :new
pero ... ¿cómo? Con esa versión, me sale el error undefined method 'users_url' for #<SessionsController:0x5072c88>
Bueno, voy a esperar a su preciosa ayuda
PS: Eso post me ayudó mucho para el manejo de errores en la suscripción. Tal vez ayude a iniciar sesión en los errores?
==== ==== EDITAR
Siguiendo el consejo respuesta 1º, también añade a initializers/devise.rb
:
config.warden do |manager|
manager.failure_app = CustomFailure
end
Cuando el usuario no se registra y trata de acceder a un " zona restringida", que se redirige a root_url
pero cuando el signo va mal, ahora tengo el siguiente error:
The action 'devise/sessions#new' could not be found for Devise::SessionsController
(PS: He eliminado todo lo que hice con el controlador de la sesión y el registro de las obras si tiene éxito)
=== === EDIT 2
Después de esta Wiki la redirección funciona perfectamente PERO Pongo No tiene ninguna notificación de error.
Y estoy mostrando el mensaje de alerta de flash/aviso de que si eso cambia nada
<% flash.each do |name, msg| %>
<% if msg.class == Array %>
<% msg.each do |message| %>
<%= content_tag :p, message, :id => "flash_#{name}" %>
<% end %>
<% else %>
<%= content_tag :p, msg, :id => "flash_#{name}" %>
<% end %>
<% end %>
INFORME FINAL DE ACTUALIZACIÓN === ===
Las obras respuesta aceptada.Simplemente no se olvide de mostrar flash alerts
Finalmente! Una pregunta que responde mi eterna duda. –