HAML如何定义方法?

时间:2018-08-31 14:19:11

标签: html ruby methods 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
 }
end

如何在haml代码中创建相同的方法?或者我该如何在我的haml文档中包括这种方法?

谢谢。

2 个答案:

答案 0 :(得分:0)

您不应在HAML中定义复杂的方法,而应使用帮助器方法。只要您的HAML可以访问您的辅助方法,您就可以从haml文件中这样调用它:

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

但是在您的情况下,您的方法将返回哈希,因此不确定在视图中要使用该数据做什么,但是您可以访问该方法返回的对象。

答案 1 :(得分:0)

如果您有一些独立的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视图中这样做,最好定义一个助手。