2011-09-01 12 views
5

Mam fragment kodu, w którym próbuję użyć zmiennej dla nazwy klasy w HAML. Oto ona:Używanie zmiennej ruby ​​dla nazwy klasy w HAML

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

Nie widzę nic złego w tym, rubymine IDE nie odbiera albo błąd, to uważa, że ​​uzasadnione jest stosowanie zmiennej. Otrzymuję następujący błąd:

odd number of arguments for Hash 

Czy ktoś może wskazać mi, co jest nie tak z powyższym kodem?

+0

Czy pojawia się błąd podczas korzystania ciąg zamiast dosłownego zmienna? –

+0

Spróbuj wywołać 'to_s' na" css_class ". – twe4ked

+0

Tak samo błąd. Kiedy używam tylko stałego łańcucha zamiast zmiennej, działa. – alexs333

Odpowiedz

0

Klawisz skrótu może poprawnie przekazać tablicę przekazaną do sekwencji klawiszy i wartości.

Dla np

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

Jeśli zdasz nieparzystą liczbę argumentów, które mają być ikona w pary klucz/wartość ...

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

Tak, jestem całkiem pewny, że to dzieje się gdzieś wewnątrz metody data_table. Tak więc sprawdź, czy tablica jest umieszczana w Hash gdzieś w sekwencji wywołań funkcji!

+0

Jeśli tak się stanie, wywołanie css_class.class zwróci "Array", ale zwróci "String" ... – alexs333

+0

Jaką wersję Ruby i HAML używasz? ? Zobacz ten numer: https://github.com/nex3/haml/issues/388 – dexter

6

Co jeśli spróbujesz:

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

lub jeśli oszczędzasz swoje poglądy jako view.html.haml:

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

Pierwsza sugestia działa, dziękuję! – RyanB

+0

OP: może powinieneś zaakceptować odpowiedź? –