Skip to content

Issue with named blocks when a partial is used inside of for loops #83

@paulyoung

Description

@paulyoung

Below is a contrived example that demonstrates my issue.

base

<% content 'before' %>
<p><% content %></p>
<% content 'after' %>

person

<% extend 'base' %>

<% block 'before' : %>
  <style type="text/css">
    #<%- @id %> {
      color: <%- @favoriteColor %>;
    }
  </style>
<% end %> 

<span id="<%- @id %>">Hello <%- @name %>!</span>

<% block 'after' : %>
  <script>
    var span;
    span = document.getElementById('<%- @id %>');
    console.log(span.innerText);
  </script>
<% end %>

people

<%
people = [
  {
    name: 'Alice'
    favoriteColor: 'red'
  }
  {
    name: 'Bob'
    favoriteColor: 'blue'
  }
]
%>

<% for person, index in people : %>
  <%
    options =
      id: "person_#{index}"
      name: person.name
      favoriteColor: person.favoriteColor
  %>
  <% include 'person', options %>
<% end %>

This produces:

<style type="text/css">
  #person_0 {
    color: red;
  }
</style>

<span id="person_0">Hello Alice!</span>

<script>
  var span;
  span = document.getElementById('item_0');
  console.log(span.innerText);
</script>


<style type="text/css">
  #person_0 {
    color: red;
  }
</style>

<span id="person_1">Hello Bob!</span>

<script>
  var span;
  span = document.getElementById('item_0');
  console.log(span.innerText);
</script>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions