25

如何在 HAML 中为单个 Ruby 语句使用多行?例如,我想写如下内容:

- entries = [{
-   :title => "The Fellowship of the Ring", 
-   :body => "We should walk instead of fly"
- }]

!!! 5
%html
  %head
    %title Blog
  %body
    #content
      - entries.each do |entry|
        .entry
          %h3.title= entry[:title]
          %p.body= entry[:body]

但是当然前四行会产生语法错误。

4

5 回答 5

42

用逗号包裹参数

根据HAML 常见问题解答

[W] 当一个函数有很多参数时,只要每行以逗号结尾,就可以将其包裹在多行中。

因此,以下应该是有效的 HAML:

- entries = [{ :title => "The Fellowship of the Ring", 
               :body  => "We should walk instead of fly" }]
于 2013-03-24T23:27:57.297 回答
9

您可以使用:ruby过滤器。

:ruby
  entries = [{ 
    :title => "The Fellowship of the Ring", 
    :body  => "We should walk instead of fly" 
  }]

!!! 5
%html
  %head
    %title Blog
  %body
    #content
      - entries.each do |entry|
        .entry
          %h3.title= entry[:title]
          %p.body= entry[:body]
于 2018-02-19T23:42:10.210 回答
7

在这里查看文档。

请注意,这是故意尴尬的,因为您不应该在模板中放置大量 ruby​​。

于 2013-03-24T23:21:26.563 回答
2
%div= "First line " + |
      "and second line" |

将呈现:

<div>First line and second line</div>

您可以使用 command-tool haml,例如pbpaste | haml在 macOS 上复制代码,或者使用 file cat file.haml | haml

如果您甚至不想要标签:

First line |
and second line |

将产生:

First line and second line
于 2017-05-25T22:45:18.823 回答
0

这有效:

= link_to( |
  'Delete', |
  attachment_path(attachment),
  confirm: 'Are you sure?',
  method: :delete,
  remote: true,
  )

注意第一行和第二行之后的管道,以及管道之前的空格!

于 2020-10-11T17:52:59.630 回答