2010-12-09 38 views
6

Voy a portar una aplicación Rails 2.8 a Rails 3. La mayoría de las cosas están funcionando, y lentamente voy resolviendo problemas. Un comportamiento que he encontrado es un poco desconcertante, y me gustaría entender qué cambió detrás de las escenas. El siguiente fragmento de código funciona en 2.x, pero falla en 3.0:¿Por qué ha cambiado este comportamiento erb en Rails 3?

<% if @apps.nil? || @apps.empty? %> 
    No rated applications. 
<% else 
    ratingshidden = false 
    @apps.each { |app| %> 
display app stuff etc.... 

a hacer que funcione en 3, tengo que cambiar de la siguiente manera:

<% if @apps.nil? || @apps.empty? %> 
    No rated applications. 
<% else %> 
<% 
    ratingshidden = false 
    @apps.each { |app| %> 
display app stuff etc.... 

Qué cambió en los carriles para exigir este sintaxis actualizada?

+2

Sólo un consejo, puede usar '@ apps.blank?' En lugar de '@apps.nil ? || @ apps.empty? '. Documentos [aquí] (http://api.rubyonrails.org/classes/Object.html#method-i-blank%3F). – markquezada

+0

¡Gracias, lo he usado para cadenas, no estoy seguro de por qué no lo he usado aquí! – Joshua

+0

Esto parece relacionado posiblemente con la desaprobación de los bloqueadores de estilo ... me encantaría saber más sobre los cambios internos. Comenzando una recompensa ... – Joshua

Respuesta

0

This railscast explica los cambios en los bloques erb en Rails 3 y por qué se hicieron.

+0

Hmm ... buena transmisión de ráfagas, pero no acaba de aclarar la luz en la instancia que se muestra aquí – Joshua

+0

Tienes razón, la vi de nuevo en este momento. Me pregunto si tiene que ver con la importancia del espacio en blanco. ¿Hay documentación para ERB que dé esto como comportamiento esperado? – nuclearsandwich

+0

No es que pueda encontrar ... – Joshua

Cuestiones relacionadas