2010-12-27 26 views
8

Me estoy dedicando cada vez más al desarrollo de RoR. ERB no se siente bien conmigo. Hice esto una vez con JSP. Incrustar el código de Ruby dentro de mi marcado no parece un buen plan, incluso si la lógica es específica de la vista. Tal vez mis temores son infundados, pero se siente peligroso. Además, hay mucha mecanografía involucrada.Alternativas a ERB

He encontrado HAML y le estoy dando una evaluación más. Si es una buena alternativa, tal vez puedas darle algunos buenos recursos.

Más allá de HAML, ¿qué otras alternativas a ERB hay para la capa de Rails View?

¿Mis temores con ERB no están justificados?

Respuesta

7

Si no le gusta Ruby en sus opiniones, HAML no lo va a ayudar. Aunque sintácticamente más succint, utiliza Ruby incorporado al igual que ERB.

Si desea evitar la lógica en sus puntos de vista, eche un vistazo a algo como Mustache. Utiliza un estilo de plantillas que enfatiza una separación más estricta de la lógica de la presentación (vistas sin lógica).

12

El código Ruby integrado dentro de una plantilla no es un problema. Ofrece a Erb y Haml un poder tremendo como lenguajes de plantilla. De hecho, muchos lenguajes de plantilla sufren porque las plantillas no tienen código (por ejemplo, el lenguaje de plantilla de Django).

El problema real que a veces ocurre es cuando el desarrollador inserta código complejo, o código extrayendo datos, o codifica actualizando los datos, o las decisiones de toma de código, en la plantilla.

Ruby and Rails ofrece al desarrollador una gran potencia y flexibilidad. Es responsabilidad del desarrollador ser responsable. Recupere sus datos desde dentro del controlador. Mueve el código complejo a un ayudante. Etc.

<%= link_to edit_post_path(@post) do %> 
    Edit post "<%= @post.title %>"!!! 
<% end %> 

Lo anterior es simple Ruby incrustado, y se sienta bien en una vista. La versión Haml es:

= link_to edit_post_path(@post) do 
    Edit post "#{@post.title}"!!! 

Así que siempre que se mantenga el código simple, y cualquier código complejo se mueve en el controlador o un ayudante, se le multa.

Tenga en cuenta que las plantillas Haml y Erb contienen cantidades iguales de código de Ruby incrustado, con la excepción de que Haml descarta todas las end s.

+0

¡Hola, limpio! Solía ​​ser que las líneas tenían que comenzar con '==' para la interpolación, pero parece que ya no es el caso. ¡TIL! :RE – Matchu

0

Yo, como tú, estoy llegando a los carriles (y Rubí) después de haber servido algún tiempo en Java. Tuve una reacción visceral cuando vi a ERB, recordando los malos tiempos de JSP antes de descubrir Velocity y Freemarker.

De todos modos, estoy mirando a dos lenguajes de plantillas que pueden interesarle:

Si te interesa Handlerbars, también mira Handlerbars.rb. Hay al menos otro proyecto con ese nombre, pero este no es un puerto de Ruby de Handlerbars, sino un contenedor de Ruby en Handlerbars.js. Entonces es "el verdadero Handlerbars".