是否有可能在Rails中使用视图助手生成的Haml缩进HTML?

Hak*_*ari 5 haml ruby-on-rails

假设我有一个带有视图助手方法的东西资源,例如:

module ThingsHelper
  def foo
    ret = ""
    3.times { ret += content_tag(:li, "foo") }
    content_tag(:ul, ret)
  end
end
Run Code Online (Sandbox Code Playgroud)

然后,在模板中使用它:

%p
  = foo 
Run Code Online (Sandbox Code Playgroud)

生成的HTML源代码如下所示:

<!DOCTYPE html>
<html>
    <head>
        <title>Foo</title>
    </head>
</html>
<body>
    <p>
        <ul><li>foo</li><li>foo</li><li>foo</li></ul>
    </p>
</body>
Run Code Online (Sandbox Code Playgroud)

如您所见,辅助输出不会缩进为其余代码.有什么方法可以解决这个问题?

Nat*_*aum 10

试试Haml提供的haml_tag辅助方法.它content_tag在某些方面,但它输出正确的缩进HTML.主要区别在于它直接输出到模板,而不是返回一个字符串.例如:

module ThingsHelper
  def foo
    haml_tag :ul do
      3.times { haml_tag(:li, "foo") }
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

(作为旁注,使用除两个空格之外的其他东西进行缩进被认为是非常糟糕的Ruby风格).