and if yes, what is the syntax? My goal is to prepend an 's' to the word 'comment' when there is more than one. in an jQuery.ejs template in a JMVC app. The following breaks. I can't find any docs for conditionals...
<%=commentsNumber%> comment<% if (commentsNumber > 1) { %> s <% } %>
This question is related to
conditional-statements
ejs
Just making code shorter you can use ES6 features. The same things can be written as
app.get("/recipes", (req, res) => {
res.render("recipes.ejs", {
recipes
});
});
And the Templeate can be render as the same!
<%if (recipes.length > 0) { %>
// Do something with more than 1 recipe
<% } %>
You can also use else if
syntax:
<% if (x === 1) { %>
<p>Hello world!</p>
<% } else if (x === 2) { %>
<p>Hi earth!</p>
<% } else { %>
<p>Hey terra!</p>
<% } %>
EJS seems to behave differently depending on whether you use { } notation or not:
I have checked and the following condition is evaluated as you would expect:
<%if (3==3) {%> TEXT PRINTED <%}%>
<%if (3==4) {%> TEXT NOT PRINTED <%}%>
while this one doesn't:
<%if (3==3) %> TEXT PRINTED <% %>
<%if (3==4) %> TEXT PRINTED <% %>
I know this is a little late answer,
you can use if and else statements in ejs as follows
<% if (something) { %>
// Then do some operation
<% } else { %>
// Then do some operation
<% } %>
But there is another thing I want to emphasize is that if you use the code this way,
<% if (something) { %>
// Then do some operation
<% } %>
<% else { %>
// Then do some operation
<% } %>
It will produce an error.
Hope this will help to someone
Yes , You can use conditional statement with EJS like if else , ternary operator or even switch case also
For Example
Ternary operator :
<%- role == 'Admin' ? 'Super Admin' : role == 'subAdmin' ? 'Sub Admin' : role %>
Switch Case
<% switch (role) {
case 'Admin' : %>
Super Admin
<% break;
case 'eventAdmin' : %>
Event Admin
<% break;
case 'subAdmin' : %>
Sub Admin
<% break;
} %>
Conditionals work if they're structured correctly, I ran into this issue and figured it out.
For conditionals, the tag before else
has to be paired with the end tag of the previous if
otherwise the statements will evaluate separately and produce an error.
ERROR!
<% if(true){ %>
<h1>foo</h1>
<% } %>
<% else{ %>
<h1>bar</h1>
<% } %>
Correct
<% if(true){ %>
<h1>foo</h1>
<% } else{ %>
<h1>bar</h1>
<% } %>
hope this helped.
Source: Stackoverflow.com