2011-11-15 15 views

Respuesta

12

Puede escapar de los símbolos erb mediante el uso de dos % en la etiqueta de apertura, y poner las plantillas de la columna vertebral en las vistas de rieles:

<script type='text/template' id="my-template'> 
    <%%= name %> 
</script> 

dará salida a lo siguiente en su página:

<script type='text/template' id="my-template'> 
    <%= name %> 
</script> 

Poner sus plantillas Backbone directamente en las vistas de sus rieles es en mi humilde opinión la mejor opción cuando está tratando de aprender. Ya estás luchando con los nuevos conceptos, no es necesario agregar otro obstáculo.

+0

Un gran consejo, no lo sabía.De hecho, utilizo jst que están almacenados limpiamente en un árbol dentro de assets – apneadiving

+0

Estaba usando una expresión regular personalizada para plantillas de subrayado. Gracias por los dos consejos '%'. – Agent47DarkSoul

-3

¿Dónde debería colocar sus plantillas Backbone? Yo diría nada. Creo que en la mayoría de las aplicaciones de Rails, el servidor debería ser responsable de todas las representaciones de HTML, mientras que el JavaScript del lado del cliente debería ser el único responsable de insertar ese HTML renderizado en el DOM. Entre otras cosas, esto hace que I18n sea más fácil.

La excepción sería si Rails simplemente se utiliza como un backend ligero para una aplicación que se ejecuta principalmente en el lado del cliente (aunque en ese caso, es posible que desee utilizar Sinatra o algo en su lugar). En este caso, Rails probablemente debería mostrar nada, y hacer que el JS do todos el renderizado.

Observe el principio subyacente aquí. O el servidor debe ser responsable de todas las representaciones, o el cliente debería hacerlo. Dividirlo hará la vida más difícil.

+0

¿Qué hay de pequeñas piezas de renderizado, como filas de tablas? –

+0

La misma respuesta. No divida la representación. ¿O no entiendo bien tu pregunta? –

+0

Quizás malinterprete la respuesta. Bueno, para usar 'Backbone.js', tengo que escribir plantillas en alguna parte. Estas plantillas usan las etiquetas '<%= %>' y mi pregunta era si hay alguna manera de hacer que los rieles presenten estas etiquetas al cliente o si hay un formato que pueda usar para renderizar plantillas Backbone.js (Underscore.js) más fácilmente. –

4

Comenzando con Rails 3.1, proporciona dos cosas que hacen que trabajar con plantillas Backbone sea un poco más fácil: el inventario de activos y la compilación automática de JST (Plantilla de JavaScript).

Cree un directorio en su carpeta app/assets llamada templates. Este directorio será recogido automáticamente por la canalización de activos.

A continuación, nombre los archivos en ese directorio con una extensión de jst y el tipo de plantilla que está creando ejs (javascript incrustado). Incluso puedes anidarlos en directorios. Por ejemplo:

app/assets/templates/my_template.jst.ejs 
app/assets/templates/bookmarks/show.jst.ejs 

La tubería de activos también permite utilizar otros lenguajes de plantillas como CoffeeScript incrustado, bigote, manillar, etc., simplemente cambiando la extensión de archivo (incluyendo cualquier y gemas necesarias).

Ahora que hacen referencia a las plantillas de la TJS en sus puntos de vista Backbone, basta con utilizar la ruta de acceso al nombre de archivo:

var Bookmark = Backbone.View.extend({ 
    template: JST['bookmarks/show'], 
    render: function() { 
    this.$el.html(this.template(this.model.attributes)); 
    return this; 
    } 
}); 

Es posible que tenga que añadir esta línea a su application.js:

// require_tree ../templates 

Aquí hay una buen artículo que explica todo esto con un poco más de detalle: http://www.bigjason.com/blog/precompiled-javascript-templates-rails-3-1

Cuestiones relacionadas