Как вызвать помощника в файле Haml - PullRequest
0 голосов
/ 29 мая 2019

Как вызвать метод в помощнике из файла Haml?

В sample.haml мне нужно вызвать метод show_message в зависимости от некоторых условий. Затем я переместил метод в помощник, но возвращаемое значение из метода обрабатывается как просто строка, а не элемент Haml.

Это образец. Haml:

- flash.each do |msg|
  - if msg.is_a?(Array)
    - msg.each do |m|
      = show_message(m)
  - if msg.is_a?(String)
    = show_message(msg)

Это helper.rb:

  def show_message(msg)
    haml = <<-HAML
    %div{class: some_class}
      = content_tag :div, #{msg}, id: "id"
    HAML
  end

Если я напишу тот же элемент HTML в show_message напрямую в sample.html, он будет работать правильно. Как я могу решить это?

1 Ответ

0 голосов
/ 29 мая 2019

Ваш вспомогательный метод должен создать полный HTML-код с помощью методов.Поскольку это на самом деле не является частью HAML, вы не можете полагаться на синтаксис, такой как %div{class: some_class}.Примерно так:

def show_message(msg)
  content_tag(:div, class: 'some_class') do
    content_tag(:div, msg, id: "id")
  end
end

См. Документацию content_tag для дополнительных примеров использования.

...