Как переносить многострочные аргументы Ruby в HAML?

Как я могу использовать несколько строк для одного оператора Ruby в HAML? Например, я хотел бы написать что-то вроде следующего:

- 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]

Но, конечно, первые четыре строки создают синтаксическую ошибку.

Ответ 1

Обернуть аргументы запятыми

В соответствии с FAQ HAML:

[W], когда функция имеет множество аргументов, ее можно обернуть через несколько строк, если каждая строка заканчивается запятой.

Итак, должно быть справедливо следующее: HAML:

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

Ответ 2

Ознакомьтесь с документами здесь.

Обратите внимание, что это преднамеренно неудобно, потому что вы не должны помещать много рубинов в свои шаблоны.

Ответ 3

%div= "First line " + |
      "and second line" |

Будет отображать:

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

Вы можете использовать командный инструмент haml, например, скопировать код, затем pbpaste | haml на macOS, или с файлом cat file.haml | haml.

Если вам даже не нужен тег:

First line |
and second line |

Будет производить:

First line and second line

Ответ 4

Вы можете использовать фильтр :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]