Multiple Haml Elements on Same Line

后端 未结 4 1217
悲&欢浪女
悲&欢浪女 2020-12-16 17:00

I want to be able to have two Haml elements on the same line. For example:

%h1 %a{:href => \'/\'} Professio.

That doesn\'t work. How would I

相关标签:
4条回答
  • 2020-12-16 17:41

    Haml cannot do this. Slim can:

    h1: a( href='/' ) Professio.
    

    is the same as:

    h1
      a( href="/ ) Professio
    

    You can write as deeper tree as you need:

    ul.nav
      li.active: a( href="/home" ):    strong Home
      li:        a( href="/contact" ): span   Contact
    

    Jade also has similar syntax and support this feature, but it's been designed for Node.js environment.

    0 讨论(0)
  • 2020-12-16 17:48

    Late answer, but I was just tackling the same problem myself and knew HAML had a way to do this as part of the language. See the White Space Removal section of the HAML reference.

    You could do it this way:

    %h1<
      %a{ :href => '/' } Professio.
    

    Or this way:

    %h1
      %a{ :href => '/' }> Professio.
    
    0 讨论(0)
  • 2020-12-16 17:53

    If you're looking to preserve the HTML on the same line you could try something like this:

    irb> print Haml::Engine.new("%h1<\n  %a{:href => '/'} Profession.").render()
    <h1><b href='/'>Profession.</a></h1>
    

    Found here: HAML whitespace removal

    [Edit: I know that's says b href above...]

    0 讨论(0)
  • 2020-12-16 17:57

    Unfortunately, you cannot put two haml elements on the same line.

    You can achieve something similar by using inline html elements:

    %h1 <a href='/'>Lorem ipsum</a>
    

    Why don't you like this format?

    %h1 
      %a{:href => '/'} Professio.
    

    Another option is to write special 'helper' method (that generate an html link). For example, the link_to in Rails:

    %h1= link_to 'Professio', root_url
    
    0 讨论(0)
提交回复
热议问题