ХАМЛ Как определить метод? - PullRequest
       6

ХАМЛ Как определить метод?

0 голосов
/ 31 августа 2018

У меня есть следующий метод ruby:

def dedup_uniq(array)
 {
   uniq: array.uniq,
   dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
 }
end

Как я могу создать такой же метод в haml коде? Или как я могу включить этот метод в мой документ HAML

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Сделайте это, если у вас есть несколько автономных файлов HAML, и у вас нет места для определения метода где-либо еще.

  -def dedup_uniq(array)
    -{ uniq: array.uniq, dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys }

Никогда не делайте этого в представлении Rails, всегда лучше определить помощника.

0 голосов
/ 31 августа 2018

Вы не должны определять сложные методы внутри HAML, а вместо этого использовать вспомогательные методы. Пока ваш HAML имеет доступ к вашему вспомогательному методу, вы можете просто вызывать его так из своего файла haml:

= dedup_uniq([:some, :example, :array, :items])

Но в вашем случае ваш метод возвращает хеш, поэтому не уверен, что вы намерены делать с этими данными в своем представлении, но у вас будет доступ к объекту, возвращенному методом.

...