[Ror-es] reemplazo de echo y debug en ror

javier ramirez
Tue Feb 2 18:53:56 GMT 2010


hola,

antes que nada, sería interesante que te hicieras con un libro de rails 
en el que ir viendo un poco cómo funciona la cosa. Paso a contestar un 
poco las dudas que comentas.


> el primer incidente es la famosisissisisima funcion "echo" de php y
>   

estrictamente hablando, el equivalente de "echo" sería "puts", lo que 
pasa es que rails no funciona exactamente como piensas.


> <% puts categoria.nombre_categoria %> <- no funciona
>   

funciona... sólo que no hace lo que tú creías ;)

si miras la salida estándar (la consola donde has arrancado el servidor) 
verás que puts está escribiendo ahí el nombre de categoría. puts escribe 
siempre a la salida estándar, pero cuando estás en una vista de rails, 
no quieres escribir sobre la salida estándar, sino sobre el response de 
la petición http, así que puts no nos sirve.

> <% print categoria.nombre_categoria %> <- no funciona
>   

de nuevo el mismo caso que antes

> <%= categoria.nombre_categoria %> <- este si funciona
> <%=h categoria.nombre_categoria %> <- este también funciona bien.
>   

efectivamente. Es la forma correcta de hacerlo. Cuando trabajas con 
rails, por defecto, estás usando sus sistema de "templates" que se llama 
ERB. Sería algo parecido a usar Smarty con PHP. En este caso en lugar de 
usar {$} como en Smarty usas <%=.

De hecho, en PHP estándar también puedes escribir <?= o <%= (si tienes 
short tags habilitados) como sustituto de "<? echo"


> el tema es el siguiente. además de <%=   cual sería el "sinonimo" de echo para ror?
>   

se considera mala práctica escribir código directamente al response 
desde dentro de un bloque de código. Si te encuentras en ese caso, 
probablemente necesites un partial, o un helper, o un rediseño de tu 
aplicación y ya puede significar que estés poniendo mucha lógica en la 
vista. Esto pasa muchas veces si vienes de hacer programación sin MVC. 
AL principio cuesta, pero luego se agradece.


aún así, si NECESITAS en un caso muy muy muy muy muy muy especial 
imprimir algo en el response desde dentro de un bloque de código en erb, 
puedes usar "concat". No lo recomiendo, pero a veces (pocas, muy pocas) 
no queda otra.

> Mi otra pregunta constante es QUE ES ESA H ????
> según he buscado me encuentro que es como para sanitizar pero que es
> esa "funcion?" o "metodo" h ?? 

es un método para sanitizar, si

> y para que sirve y existen otros?
>   

obviamente, existen muchos más. La documentación de rails es tu amiga y 
los muestra todos. La palabra clave para las cosas que se pueden usar en 
las vistas es "helpers".

http://api.rubyonrails.org/
http://guides.rubyonrails.org

> existe algo similar para ror para hacer el debug?
>   

puedes intentar con "objeto.inspect" o "objeto.to_yaml"


Saludos,

j

-- 

javier ramírez

..i do ruby on rails development in madrid, spain, at 
http://www.aspgems.com

http://formatinternet.com
http://spainrb.org/javier-ramirez
http://workingwithrails.com/person/5987-javier-ramirez