38

I can't set a variable name in a class in jade:

.flag_#{ session.locale } #{ session.locale }

I have:

<div class="flag_" >en</div>

And I'd like to have

<div class="flag_en" >en</div>

Thanks

user1860758
  • 405
  • 1
  • 4
  • 6

5 Answers5

78

Try this (have not tested):

div(class="flag_#{ session.locale }") session.locale
karaxuna
  • 26,752
  • 13
  • 82
  • 117
16

As for pug@2.0.0-alpha3 works this way:

div(class="flag_" + session.locale) session.locale
Pablo Armentano
  • 583
  • 7
  • 13
  • 1
    check the version you are using - @karaxuna's solution doesn't work anymore on pug – miro Aug 08 '16 at 21:54
3

Here's another approach:

mixin formButton(text, type, extra_classes)
    - var default_classes = 'btn btn-primary'
    if extra_classes
        - var classes = default_classes + ' ' + extra_classes
    else
        - var classes = default_classes

    if type
        button(class=classes type=type) !{text}
    else
        button(class=classes type="submit") !{text}


Example 1:

Usage:

+formButton('Text')

Result:

<button type="text" class="btn btn-primary" type="submit">Text</button>


Example 2:

Usage:

+formButton('Text', 'button')

Result:

<button type="text" class="btn btn-primary" type="button">Text</button>


Example 3:

Usage:

+formButton('Text', 'button', 'extra-class')

Result:

<button type="text" class="btn btn-primary extra-class" type="button">Text</button>
davidnknight
  • 462
  • 4
  • 7
2

You can also use conditional statements to do this like

  if liked == true
    span.like.active
  else
    span.like
dotslashlu
  • 3,361
  • 4
  • 29
  • 56
0

You can also use a template literal:

- const session = { locale: 'en' }
div(class=`flag_${session.locale}`) #{session.locale}

//- Just to show more options:

div(class=`flag_${session.locale}`)= session.locale
div(class=`flag_${session.locale}`) Current language is #{session.locale}
div(class=`flag_${session.locale}`)= `Current language is ${session.locale}`

Output (using Pug 2.0.4):

<div class="flag_en">en</div>
<div class="flag_en">en</div>
<div class="flag_en">Current language is en</div>
<div class="flag_en">Current language is en</div>
Matias Kinnunen
  • 7,828
  • 3
  • 35
  • 46