Kumar Kailash
Kumar Kailash

Reputation: 1395

Jade/Pug if else condition usage

I'm sending a date to a .jade file from my .js file using Node.js. When the #{date} field is false, it executes the else and print man as it's answer. What could be going wrong?

if #{date} == false
  | #{date}
else
  | man

Upvotes: 18

Views: 45992

Answers (3)

blamb
blamb

Reputation: 4289

Your statement was backwards. For the syntax, You can use this style to work:

p Date:
  if date
    | date
  else
    |  man

Its correct that you don't need the #{} within expression. I was not able to get the = to work, or other ways on the other answers.

Ternary Style

For Myself, I too was looking for the ternary operator to do this on one line. I whittled it down to this:

p Date: #{(date ? date : "man")}

Alternatively, you can use a var, which adds one more line, but is still less lines than OP:

- var myDate = (date ? date : "man")
p Date: #{myDate}

I was not able to get the following to work, as suggested in another answer.

| #{date ? date : 'man'}

Upvotes: 2

Mike Causer
Mike Causer

Reputation: 8314

If date is false, do you want to output the string 'man'? If yes, your if and else statements are the wrong way around...

How about:

if date
  = date
else
  | man

or even:

| #{date ? date : 'man'}

or simply:

| #{date || 'man'}

Upvotes: 30

Marc
Marc

Reputation: 1976

Within if expression you write plain variable names, without #{...}

if date == false
  | #{date}
else
  | man

Upvotes: 8

Related Questions