Использование переменной ruby ​​для имени класса в HAML - PullRequest
6 голосов
/ 01 сентября 2011

У меня есть фрагмент кода, где я пытаюсь использовать переменную для имени класса в HAML.Вот оно:

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

Я не вижу в этом ничего плохого, RubyMine IDE тоже не выбирает ошибку, думает, что это допустимое использование переменной.Я получаю следующую ошибку:

odd number of arguments for Hash

Может кто-нибудь указать мне, что не так с кодом выше?

Ответы [ 2 ]

7 голосов
/ 01 сентября 2011

Что делать, если вы попробуете:

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

или если вы сохраняете ваши представления как view.html.haml:

- data_table(@installation_requests, nil, {:placeholder => ''}) do |installation_request, css_class|
  <tr class="#{css_class}">
  ....stuff....
  </tr>
0 голосов
/ 01 сентября 2011

Хэш может фактически аккуратно передать переданный ему массив в последовательность ключей и значений.

Например ::1003 *

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

Если вы передаете нечетное количество аргументов, которые нужно разделить на пары ключ / значение ...

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

Итак, я почти уверен, что это происходит где-то внутри data_table метода. Поэтому, пожалуйста, проверьте, не находится ли массив в Hash где-нибудь в последовательности вызовов функций!

...