HAML 如何定义一个方法?
HAML How to define a method?
我有以下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 文档中?
谢谢。
您不应在 HAML 中定义复杂的方法,而应使用辅助方法。只要您的 HAML 可以访问您的辅助方法,您就可以从您的 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 视图中这样做,定义助手总是更好。
我有以下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 文档中?
谢谢。
您不应在 HAML 中定义复杂的方法,而应使用辅助方法。只要您的 HAML 可以访问您的辅助方法,您就可以从您的 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 视图中这样做,定义助手总是更好。