Foros del Web » Programando para Internet » Ruby »

Problema gestión usuarios

Estas en el tema de Problema gestión usuarios en el foro de Ruby en Foros del Web. Buenas tardes a todos. Estoy creando un formulario de "log in" a mi página web y necesito alguna ayuda. Este es mi código html: @import ...
  #1 (permalink)  
Antiguo 13/01/2014, 14:47
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Problema gestión usuarios

Buenas tardes a todos.

Estoy creando un formulario de "log in" a mi página web y necesito alguna ayuda.

Este es mi código html:
Código HTML:
Ver original
  1. <%= form_for(@user) do |f| %>
  2.  
  3. <div class="field">
  4.   <%= f.label :name %><br>
  5.   <%= f.text_field :name %>
  6. </div>
  7. <div class="field">
  8.   <%= f.label :password %><br>
  9.   <%= f.password_field :password %>
  10. </div>
  11.  
  12. <% end %>
  13. </html>


En el controlador propio tengo lo siguiente:
Código Ruby:
Ver original
  1. def index
  2.     @profiles = Profile.all     # esta función guarda todos los Profiles añadidos.
  3.     @user = User.all


Al lanzar el html me salta el siguiente error.

undefined method `model_name' for ActiveRecord::Relation::ActiveRecord_Relation_Prof ile:Class


Alguien puede darme algún consejo/pista?. Si son tan amables también podrían darme algún consejo sobre cómo hacer este log in!!

Muchas gracias!.


Un saludo.
  #2 (permalink)  
Antiguo 13/01/2014, 15:29
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

necesitar pasarle un objeto User al form, ahi le estas pasando una relacion de activerecord, User.all te regresa todos los usuarios
__________________
>> abimaelmartell.com
  #3 (permalink)  
Antiguo 14/01/2014, 04:05
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Podrías decirme cómo se pasa el objeto?. Gracias.
  #4 (permalink)  
Antiguo 14/01/2014, 11:31
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

intenta con User.new, solo para que te renderize el formulario
__________________
>> abimaelmartell.com
  #5 (permalink)  
Antiguo 14/01/2014, 15:27
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Cita:
Iniciado por abimex Ver Mensaje
intenta con User.new, solo para que te renderize el formulario
¿En caso de que quisiera pasarle la lista de los usuarios?. Una vez el usuario se ha loqueado debo comprobar que existe en mi base de datos para que pueda hacer log in.

Otra cuestión, ¿podrías pasarme alguna referencia a algún libro/pdf donde se explicase claramente cómo funciona el RoR (modelo/vista/controlador), no tengo el concepto de objeto muy claro.

Muchas gracias por tu paciencia.
  #6 (permalink)  
Antiguo 14/01/2014, 21:18
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

Claro, existe este gratuito -> http://ruby.railstutorial.org/
Este curso en español -> http://codehero.co/ruby-on-rails-des...configuracion/

Y en libros de pago te recomiendo este -> https://leanpub.com/tr4w

Un saludo!
__________________
>> abimaelmartell.com
  #7 (permalink)  
Antiguo 15/01/2014, 04:34
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Respuesta: Problema gestión usuarios

Una de las cosas que tiene Ruby en general y Rails en particular, es que existen gemas (librerías) para casi cualquier cosa. Aunque por motivos de aprendizaje seguramente sea bueno que andes experimentando y haciendo cosas por tu cuenta, claro.

Lo digo porque para hacer un sistema de usuarios, existe una gema llamada device, que es bastante simple, como siempre, de poner a funcionar y además completamente configurable.

abimex creo que es la primera cosa es español que he visto más o menos decente y actualizada.

Para Ruby alguna vez recomiendo este: http://ruby.bastardsbook.com. Que si vienes de PHP suele estar bien porque te enseña como sino supieses nada de programación —y en PHP se hacen muchas cosas que no se deben porque se pueden, vicios vicios.
  #8 (permalink)  
Antiguo 15/01/2014, 16:00
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

He leído mucho esta tarde sobre la estructura MVC (modelo/vista/controlador) y creo que ya me estoy enterando mejor del asunto.

Ahora podré argumentar mejor mi pregunta.

Tengo un controller llamado "Home", este no es un objeto puesto que únicamente quiero este controlador para que se la página principal. Desde su view, quiero hacer el login. Para ello, una vez el usuario tipea el user + pass, la acción que haya por detrás deberá comprobar si se han introducido los valores adecuados, y para ello deberá tener acceso a "User.all". Pero haciendo pruebas, veo que con "User.all" desde el controller de Home le devuelve una lista vacía y al hacer un @user.name imprime "User" y no el nick del usuario como se desearía. ¿Podrían decirme cómo puedo pasarle la información de los usuarios de la base de datos desde el controlador de Usuarios?.

Se me está ocurriendo que se podría hacer también pasando los argumentos que el usuario teclee por teclado al objeto User, y ahí sea donde muestre en pantalla que el login ha sido correcto. ¿Cómo lo veis?.

Un saludo, muchas gracias.
  #9 (permalink)  
Antiguo 15/01/2014, 16:27
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Otra pregunta, el controlador Home nunca puede llegar a ver los usuarios que hay en la base de datos, correcto?. Por eso después de hacer @user = User.all me dice que el objeto @user está vacío.

Entonces, ¿cómo puedo hacer para que el controlador home extraiga los usuarios que el controlador User tiene?.

Muchas gracias.
  #10 (permalink)  
Antiguo 15/01/2014, 19:12
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

Puedes llamar User.all en el controlador Home tambien
__________________
>> abimaelmartell.com
  #11 (permalink)  
Antiguo 16/01/2014, 10:59
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Pero el controller Home no tiene un modelo asociado por lo que no podrá ver los usuarios registrados en la base de datos, correcto?.

De todas formas hice lo que dices y no funcionaba. Al hacer desde el view de Home un:
<%= @user.name %> imprime "User", nada mas.


Muchas gracias, un saludo.
  #12 (permalink)  
Antiguo 16/01/2014, 11:19
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

En rails no asocias los modelos a los controladores, puedes llamar cualquier modelo en cualquier controlador :)

Saludos!
__________________
>> abimaelmartell.com
  #13 (permalink)  
Antiguo 16/01/2014, 15:32
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Estaba escribiendo el código del template mal....Así normal que no me imprimiese correctamente.

Así sería lo correcto-->
<% @user.each do |user| %>
<%= user.name %>
<% end %>

Gracias por sus contestaciones. Seguramente me irán surgiendo mas dudillas ...
  #14 (permalink)  
Antiguo 21/01/2014, 16:43
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Buenas tardes, tengo una duda. ¿Cómo puedo pasar los parámetros de la view al controller para que este lea el contenido introducido el el form?.

Esto es lo que tengo.

Código ruby:
Ver original
  1. <%= form_for @user do |fu| %>
  2.         <div class="field">
  3.             <%= fu.label :name %><br>
  4.             <%= fu.text_field :name %>
  5.         </div>
  6.         <div class="field">
  7.             <%= fu.label :password %><br>
  8.             <%= fu.password_field :password %>
  9.         </div>
  10.         <%= link_to 'Log in', controller: 'home', action: 'login' %>
  11.  
  12.     <% end %>


Controller. Quiero imprimir el nombre introducido en el formulario

def login
@user_name = User.new(params[:name])
if @user_name.name == nil
print 'ESTA VACIOOOOOO'
else
print "este es ============== >"
print @user_name.name
  #15 (permalink)  
Antiguo 21/01/2014, 19:16
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

Revisa como te pone el nombre del input, generalmente sera params[:user][:name], puedes revisar los parámetros haciendo print(params.inspect).

Si quieres crear un usuario ahi deberás hacer User.new params[:user]

Un saludo!
__________________
>> abimaelmartell.com
  #16 (permalink)  
Antiguo 22/01/2014, 15:11
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Haciendo ese print me devuelve lo siguiente => {"controller"=>"home", "action"=>"login"}

Creo que no estoy declarándome bien el html. Como puedo coger los datos del form para enviárselos en el "link_to" ??

Gracias.
  #17 (permalink)  
Antiguo 22/01/2014, 22:15
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

Ahh ya vi, necesitas poner un submit button, en vez de link_to pon:

Código ruby:
Ver original
  1. <%= fu.submit 'Log In' %>

La url a donde va el post tienes que ponerla en el metodo form_for
__________________
>> abimaelmartell.com
  #18 (permalink)  
Antiguo 23/01/2014, 02:51
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

En efecto abimex, ayer terminé arreglándolo. Ya le estoy pillando el truquillo a esto de rails...

Estoy enfoncando el tema de usuarios desde el punto de vista de:
1) EL usuario carga la página de login.
2) Introduce sus datos y checkea login.
3) Los campos introducidos le llegan al controller.
4) Este controller checkea con la DB si el usuario existe, si existe, comprueba la password, y si es correcta le muestra el profile.


¿Cómo ves esta opcion?.


Muchas gracias, un saludo.
  #19 (permalink)  
Antiguo 23/01/2014, 13:03
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

Está muy bien, asi es como funciona generalmente el login.

Un saludo :D
__________________
>> abimaelmartell.com
  #20 (permalink)  
Antiguo 24/01/2014, 12:00
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".

Me da ese error al hacer lo siguiente:

Código ruby:
Ver original
  1. elsif log.name != nick
  2.  
  3.         flash[:notice]      = 'Invalid User/Password, try again'
  4.         redirect_to home_path


¿qué está pasando? ;(
  #21 (permalink)  
Antiguo 24/01/2014, 13:28
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

pon el código completo del metodo
__________________
>> abimaelmartell.com
  #22 (permalink)  
Antiguo 24/01/2014, 14:07
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Código ruby:
Ver original
  1. def login
  2.     #print(params.inspect)
  3.     @user = User.all
  4.     nick = params[:nick]
  5.     print nick
  6.      @user.each do |log|
  7.       if log.name ==  nick
  8.         print log.id
  9.         flash[:notice]      = 'jjjjj'
  10.         redirect_to user_path(log.id)
  11.  
  12.       else
  13.        render users_path
  14.       end
  15.     end
  16.  
  17.   end
  #23 (permalink)  
Antiguo 24/01/2014, 14:16
Avatar de abimex
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: ~
Mensajes: 751
Antigüedad: 17 años, 1 mes
Puntos: 137
Respuesta: Problema gestión usuarios

intenta con

return redirect_to user_path(log.id)

Recuerda que puedes buscar un usuario por name usando

User.find_by_name

asi no estaras trayendo todos los registros como lo haces ahora
__________________
>> abimaelmartell.com
  #24 (permalink)  
Antiguo 26/01/2014, 16:13
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Ok lo he probado y redirige, pero no muestra el mensaje cuando el usuario es incorrecto. ¿Sabes qué puede estar pasando?. Dejo el código a continuación.


Código ruby:
Ver original
  1. if log.name ==  nick
  2.         print 'Este es el nickname'
  3.         flash[:notice]      = 'jjjjj'
  4.         return redirect_to user_path(log.id)
  5.       else
  6.         flash[:notice]    = 'jjjjj'
  7.         return redirect_to 'localhost:3000'
  8.         #return redirect_to user_path(log.id)
  #25 (permalink)  
Antiguo 26/01/2014, 16:42
 
Fecha de Ingreso: febrero-2013
Mensajes: 55
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Problema gestión usuarios

Otra cosa, cómo puedo mostrar la password almacenada en la DB?.


Gracias.

Etiquetas: usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:06.