在编写 ruby 代码时,haml 中的 = 和 - 有什么区别?

What is the difference between = and - in haml while writing ruby code?

所以我是 HAML 的新手。

在学习 HAML 教程时,表示 ruby 代码的方式被提到为 =

例如:%strong= item.title

但是当我运行这个代码时:

= @list.documents.each do |doc|
  %tbody
    %tr
      %td= doc.display_name

除了显示的所有列表数据之外,还显示了很多与显示的实际列表数据相关的垃圾数据。 这是我得到的:

val1 val2 val3 [#Document......@id : val1, @id:val2.....]

当我尝试使用相同的代码同时将 = 替换为 - 时,未收到不需要的数据。

- @list.documents.each do |doc|
      %tbody
        %tr
          %td= doc.display_name

输出:

val1 val2 val3

谁能解释一下在 haml 中编写 ruby 代码时 -= 之间的区别?

哈姆
=用于编写ruby代码并将结果显示为输出
- 用于在 haml 中编写 ruby 代码并且没有显示输出。
您可以从这里阅读更多关于 haml 的信息
http://haml.info/tutorial.html

它们都表明后面的内容需要作为Ruby代码处理。但是 - 不会输出结果以供查看,而 = 会。

例如,考虑以下助手:

def hlp
  [1,2].each(&:succ) # using example relevant to your code sample
end

each 将 return 调用它的枚举器。所以该辅助方法的 return 值将是 [1,2].

您的 HAML 视图中的以下内容将不会显示 [1,2]

- hlp

但是下面会显示:

= hlp

因此在您分享的示例代码中,您将使用-,而不是=,因为您不想一次显示所有@list.documents each ] 完成了。