如何在haml文件中调用助手

时间:2019-05-29 16:20:22

标签: ruby haml

如何从haml文件中调用助手中的方法

在sample.haml中,我需要根据某些条件调用相同的方法(show_message)。然后,我将方法移到了辅助方法,但是方法返回的值仅被视为字符串,而不是haml元素。

sample.haml

  - 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

如果我直接在sample.html的show_message中编写相同的html元素,则它可以正常工作。我该怎么解决?

1 个答案:

答案 0 :(得分:0)

您的辅助方法需要通过方法构造完整的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

有关更多用法示例,请参见the documentation