Html HAML如何定义方法?

Html HAML如何定义方法?,html,ruby,methods,haml,Html,Ruby,Methods,Haml,我有以下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 如何在hamlcode中创建相同的方法?或者我如何在haml文档中包含此方法 谢谢。您不应该在HAML中定义复杂的方法,而应该使用helper方法。只要您的HAML可以访问您的h

我有以下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
code中创建相同的方法?或者我如何在haml文档中包含此方法


谢谢。

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

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

但是在您的情况下,您的方法将返回一个散列,因此不确定您打算在视图中对该数据执行什么操作,但是您可以访问该方法返回的对象。

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

您使用Rails吗?如果是这样,为什么不使用helper方法呢?我使用的是基于ruby的
.haml
doc。我不知道如何使用helper方法,或者它是否适用于
haml
。如果你能解释,我将不胜感激。谢谢。将该方法放入
app/helpers/something.rb
,然后在
haml
文件中,只需写入
=dedup_array([…])
。不过,在
haml
文件中分享您实际尝试使用该方法的内容可能会对您有所帮助。在我看来,这个问题可能是XY问题。作为对我先前问题的回答,有人向我展示了如何用新方法解决我的问题。在这一联系上,事情得到了更好的解释。谢谢。好的,我有我的
.haml
文档,里面有我所有的变量和代码,它们将被haml翻译成html。我不知道如何使用helper方法,也不知道在哪里添加它们@汤姆·洛德说把它们放在app/helpers/something.rb中,但我不知道app文件夹应该放在哪里。我查看了我的ruby文件夹,但我没有应用程序文件夹。你可能想知道为什么我做了这么琐碎的编辑。这是因为我无意中否决了你的答案,如果没有你或其他人进行编辑,我无法删除否决票。很抱歉顺便说一句,我对HAML一无所知,因此无法评估你的答案。当我认为你已经看到它时,我将删除此评论。好的。没问题。谢谢你让我知道。:)