Search code examples
coffeescriptdocpadeco

Nested if is not working in eco template engine


I was trying use nested if in eco template. Here is my code

<% for document in @getCollection('posts').toJSON()[@[email protected]]: %>

                    <% if true %>

                        <p>  <%=  new Date(document.date.toDateString()).getTime() <= new Date(new Date().toDateString()).getTime() %> </p>


                        <div class='row-fluid'>
                            <div class='span12 blogShadow'>
                                <div class="row-fluid">
                                    <div class='span12 archiverow'>
                                        <span>(<%= document.date.toDateString() %>) => </span>
                                        <span>
                                            <a href="<%= document.url %>">   <%= document.title %> </a>
                                        </span>
                                    </div>
                                </div>
                                <div class="row-fluid archiverow">
                                    <% if document.img:%>
                                        <img class="span1" src="<%= document.img %>" width=100 height=100 />
                                        <span class="span11"><%= document.description %></span>
                                    <% else: %>
                                        <span class="span12"><%= document.description %></span>
                                    <% end %>
                                </div>
                            </div>
                        </div>
                    <% end %>
                    <br/>
                    <br/>
                <% end %>

if I remove first if with its corresponding end statement things working fine, but if I put that it is giving parsing error with message unexpected dedent.

for the else statement down there

<% else: %>
                                        <span class="span12"><%= document.description %></span>
                                    <% end %>

I am new to eco and I don't understand the message. Is this kind of nested if is possible and if not what is the work around for this.

As, I am using docpad and eco I am using as template engine.

Please let me know if any further details is required.


Solution

  • I able to solve the issue by following code. I was missing : to evaluate expression.

    <% for document in @getCollection('posts').toJSON()[@[email protected]]: %>
                        <% if (new Date(document.date.toDateString()).getTime() <= new Date(new Date().toDateString()).getTime()): %>
                                <div class='row-fluid'>
                                    <div class='span12 blogShadow'>
                                        <div class="row-fluid">
                                            <div class='span12 archiverow'>
                                                <span>(<%= document.date.toDateString() %>) => </span>
                                                <span>
                                                    <a href="<%= document.url %>">   <%= document.title %> </a>
                                                </span>
                                            </div>
                                        </div>
                                        <div class="row-fluid archiverow">
                                            <% if document.img:%>
                                                <img class="span1" src="<%= document.img %>" width=100 height=100 />
                                                <span class="span11"><%= document.description %></span>
                                            <% else: %>
                                                <span class="span12"><%= document.description %></span>
                                            <% end %>
                                        </div>
                                    </div>
                                </div>
                        <% end %>
                    <% end %>
    

    both if is working without any issue.