Is it possible to have Haml indent HTML generated by a view helper in Rails?
haml, ruby-on-rails
Solution
Try out the `haml_tag` helper method provided with Haml. It's like `content_tag` in some ways, but it outputs properly indented HTML. The main difference is that it outputs directly to the template, rather than returning a string. For example:
module ThingsHelper
def foo
haml_tag :ul do
3.times { haml_tag(:li, "foo") }
end
end
end
(As a side note, it's considered very bad Ruby style to use something other than two spaces for indentation).
Problem
Say I have a things resource with a view helper method such as: ``` module ThingsHelper def foo ret = "" 3.times { ret += content_tag(:li, "foo") } content_tag(:ul, ret) end end ``` This, then, is used in a template: ``` %p = foo ``` The HTML source that's generated looks like this: ``` <!DOCTYPE html> <html> <head> <title>Foo</title> </head> </html> <body> <p> <ul><li>foo</li><li>foo</li><li>foo</li></ul> </p> </body> ``` As you can see, the helper output is not indented as the rest of the code. Any way to remedy this?