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

时间:2015-05-13 06:58:20

标签: ruby-on-rails ruby haml

所以我是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代码时解释-=之间的区别吗?

2 个答案:

答案 0 :(得分:6)

它们都是需要将后续内容作为Ruby代码处理的指标。但是-不会将结果输出到=而是def hlp [1,2].each(&:succ) # using example relevant to your code sample end

例如,请考虑以下帮助程序:

each

[1,2]将返回调用它的枚举器。因此,该辅助方法的返回值为[1,2]

您的HAML视图中的以下内容将不会显示- hlp

= hlp

但以下内容将显示:

-

因此,在您共享的示例代码中,您将使用=,而不是@list.documents,因为您不希望each显示所有{{1}}与他们一起完成。

答案 1 :(得分:0)

在haml中,-用于编写ruby代码并将结果显示为输出,而{{1}}仅用于编写ruby代码。
你可以从中了解更多关于haml的信息 http://haml.info/tutorial.html