5. /app/controllers/
sessions_controller.rb
/logs/development.log
miércoles 2 de febrero de 2011
6. Rutas y helpers
/app/layouts/
application.html.erb
/app/views/sessions/
new.html.erb
miércoles 2 de febrero de 2011
7. Las rutas definen los siguientes helpers que podemos usar en los
links y en los formularios y nos ahorran escribir direcciones largas.
Sólo hay que poner el sufijo “_path” a la primera columna
Ejemplos:
•link_to users_path
•link_to new_user_path
•form_for sessions_path (porque es POST)
•new_session_path
miércoles 2 de febrero de 2011
9. Dónde lo dejamos ayer:
https://github.com/esti/deusto_app/zipball/
2_signup_and_login
Dónde vamos a llegar ahora:
https://github.com/esti/deusto_app/zipball/3_tweets
miércoles 2 de febrero de 2011
10. Test funcionales
/test/functional/users_controller_test.rb
miércoles 2 de febrero de 2011
11. ... para login/logout también
/test/functionals/sessions_controller_test.rb
miércoles 2 de febrero de 2011
12. Fixtures
Para comprobar que un usuario ya registrado puede
loguearse, necesitamos poblar la base de datos de test con
usuarios de prueba
/db/fixtures/users.rb
miércoles 2 de febrero de 2011
13. Ejecutamos todos los tests, tanto Unit como Functional
$ rake test
miércoles 2 de febrero de 2011
14. Ejercicios
• users_controller_test.rb: Comprobar
que un usuario que pone un email no válido
al registrarse, vuelve al formulario y le sale
el error de validación.
• sessions_controller_test.rb:
Comprobar que un usuario inexistente en
la base de datos no puede entrar.
miércoles 2 de febrero de 2011
15. Siguiente
Ahora que ya estamos loggeados, necesitamos poder
publicar tweets
miércoles 2 de febrero de 2011
28. Nos aseguramos de que para poder
tweetear, te has identificado antes
Y al guardar el tweet, nos
aseguramos de asignárselo al usuario
correspondiente
miércoles 2 de febrero de 2011
29. Esta es la función que comprueba
que el usuario está loggeado antes
de poder tweetear
miércoles 2 de febrero de 2011
30. Ahora que tenemos la funcionalidad principal de nuestra
applicación, hacemos la “home” de nuestra web sea el
listado de tweets
miércoles 2 de febrero de 2011
32. Es hora de hacer un poco de limpieza: el código que muestra los errores de validación, es
prácticamente el mismo para el formulario de tweets y para el de usuarios.
/app/views/tweets/_form.html.erb
/app/views/users/_form.html.erb
miércoles 2 de febrero de 2011
33. Hacemos un “partial” (/app/views/shared/
_error_messages.html.erb) que contiene ese
código duplicado
Y lo incluimos en los dos formularios
miércoles 2 de febrero de 2011
38. La función de hacer login en un test la vamos a necesitar en
muchos sitios, por eso la ponemos en el helper /test/
test_helper.rb
miércoles 2 de febrero de 2011
43. Prototype: Librería Javascript
Así incluimos la
librería javascript
Este es el
HTML que
genera
miércoles 2 de febrero de 2011
44. Le decimos al formulario
que queremos que funcione
de manera “remota”
Genera una etiqueta
personalizada HTML5 que
incluye en el formulario
Y el javascript que trae Rails
incluye una función que
todos los formularios que
tienen esta etiqueta se
manden de manera remota
miércoles 2 de febrero de 2011
45. Ahora tenemos que hacer que la respuesta del servidor sea
la petición es “remota”. Para eso vale el bloque
“respond_to”!
render “app/views/tweets/create.js.erb”
miércoles 2 de febrero de 2011
46. /app/views/tweets/create.js.erb
Contiene la respuesta del servidor para el formulario
remoto, en javascript.
miércoles 2 de febrero de 2011
47. Hacemos un partial
que contiene la
porción de HTML
que corresponde a
cada tweet, que es
lo que incluimos al
principio de la lista
cuando alquien
crea un nuevo
/app/views/tweets/_tweet.html.erb tweet
Y ya que lo
tenemos lo
reutilizamos en el
/app/views/tweets/index.html.erb listado de tweets
miércoles 2 de febrero de 2011