2011-09-01 11 views
5

Tengo el fragmento de código en el que intento usar una variable para un nombre de clase en HAML. Aquí está:Utilizando la variable Ruby para el nombre de clase en HAML

 - data_table(@installation_requests, nil, {:placeholder => ''}) do |installation_request, css_class| 
      %tr{:class => css_class} 

no puedo ver nada malo en ello, RubyMine IDE no se recupera de un error o bien, se cree que es legítimo el uso de la variable. Recibo el siguiente error:

odd number of arguments for Hash 

¿Alguien me puede indicar qué ocurre con el código anterior?

+0

se obtiene el error cuando se utiliza una cadena literal en lugar de la ¿variable? –

+0

Intenta llamar a 'to_s' en' css_class'. – twe4ked

+0

Sí, el mismo error. Cuando solo estoy usando una cadena de código duro en lugar de una variable, funciona ... – alexs333

Respuesta

0

El Hash realmente puede pasar una matriz ordenada en una secuencia de claves y valores.

Por ejemplo:

Hash["a", "apple", "b", "boy"]  #=> {"a"=>"apple", "b"=>"boy"} 

Si pasa un número impar de argumentos que se splat en pares clave/valor ...

Hash["a", "apple", "b", "boy", "c"] #=> odd number of arguments for Hash 

lo tanto, estoy bastante seguro de que esto está sucediendo en alguna parte dentro del método data_table. Por lo tanto, compruebe si una matriz se está insertando en Hash en algún lugar de la secuencia de llamadas a funciones.

+0

Si esto sucede, llamar a css_class.class devolvería 'Array', pero devolverá 'String' ... – alexs333

+0

¿Qué versión de Ruby y HAML estás usando? ? Ver este problema: https://github.com/nex3/haml/issues/388 – dexter

6

¿Qué pasa si se intenta:

- data_table(@installation_requests, nil, {:placeholder => ''}) do |installation_request, css_class| 
    %tr{:class => "#{css_class}"} 

o si va a guardar sus puntos de vista como view.html.haml:

- data_table(@installation_requests, nil, {:placeholder => ''}) do |installation_request, css_class| 
    <tr class="#{css_class}"> 
    ....stuff.... 
    </tr> 
+0

¡La primera sugerencia funciona, gracias! – RyanB

+0

OP: ¿quizás deberías aceptar la respuesta? –

Cuestiones relacionadas