2011-09-01 21 views
5

Ho il pezzo di codice in cui sto cercando di utilizzare una variabile per un nome di classe in HAML. Eccolo:Utilizzo della variabile ruby ​​per il nome classe in HAML

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

non riesco a vedere niente di sbagliato con esso, RubyMine IDE non raccogliere un errore o, si pensa che sia legittimo uso della variabile. Sto ottenendo il seguente errore:

odd number of arguments for Hash 

Qualcuno mi può indicare cosa c'è di sbagliato con il codice di cui sopra?

+0

si ottiene l'errore quando si utilizza una stringa letterale al posto del variabile? –

+0

Prova a chiamare 'to_s' su' css_class'. – twe4ked

+0

Sì, lo stesso errore. Quando uso solo una stringa con hardcoded anziché la variabile funziona ... – alexs333

risposta

0

L'Hash può passare in modo preciso un array passato ad esso in una sequenza di chiavi e valori.

Per esempio:

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

Se si passa un numero dispari di argomenti da splat in coppie chiave/valore ...

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

Quindi, io sono abbastanza sicuro che questo sta accadendo da qualche parte all'interno del metodo data_table. Quindi, per favore controlla se un array è stato splatato in Hash da qualche parte nella sequenza di chiamate di funzione!

+0

Se ciò accade, chiamare css_class.class restituirà 'Array', ma restituisce 'String' ... – alexs333

+0

Che versione di Ruby e HAML stai usando ? Vedi questo numero: https://github.com/nex3/haml/issues/388 – dexter

6

Che cosa succede se si tenta:

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

o se si sta salvando le vostre opinioni come view.html.haml:

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

Il primo suggerimento funziona, grazie! – RyanB

+0

OP: forse dovresti accettare la risposta? –

Problemi correlati