each_group

An article by Gaspard Bucher

move context into each element of a group

  1. action
  2. ajax
  3. API
  4. classes
  5. common attributes
  6. conditions
  7. context
    1. ancestors
    2. author
    3. comments
    4. comments_to_publish
    5. content_for_layout
    6. context
    7. count
    8. data
    9. each
    10. each_group
    11. expand_with
    12. find
    13. group
    14. node
    15. project
    16. proposed
    17. query
    18. query_errors
    19. query_parse
    20. real_project
    21. real_section
    22. redactions
    23. replies
    24. search_results
    25. section
    26. tags
    27. to_publish
    28. unknown
    29. user
    30. visitor
    31. visitor_node
  8. dates
  9. display
  10. forms
  11. i18n
  12. meta
  13. SQLiss
  14. urls

move context into each element of a group

see each, group

grouping nodes

The group method takes a list as input and groups items using the given attribute. The object available in “each_group” is the first element of the list of grouped items.

<ul do='nodes in project order by parent_id asc' do='group' by='parent_id'>
  <li do='each_group'><h3 do='parent.title'/>
    <ul>
      <li do='each' do='link'/>
    </ul>
  </li>
</ul>

You can use the method to group other elements such as data or comments:

grouping comments

<ul do='comments from nodes in project order by created_at desc limit 20' do='group' by='discussion_id'>
  <!-- comments grouped by node -->
  <li do='each_group'><h3 do='node.title'/>
    <ul>
      <!-- shows a single comment -->
      <li do='each' do='title'/>
    </ul>
  </li>
</ul>

grouping data

<r:data>
<r:group by='node_a'>
  <r:each_group><r:stat find='sum'/>
    <r:each>...</r:each>
  </r:each_group>
</r:group>
</r:data>