class ExpressTemplates::Components::Presenters::TreeFor
Create an html table
or ol
(ordered list) for a model object representing a tree of similar objects.
The objects must respond to :children
.
The block is passed a NodeBuilder which may accept field names.
Example:
“`ruby tree_for(:roles) { |role|
role.name
} “`
If the view has an @roles variable with a Role having children, this will turn into markup such as the following:
<ul id="roles" class="roles tree"> <li>SuperAdmin <ul> <li>Admin <ul> <li>Publisher <ul> <li>Author</li> </ul> </li> <li>Auditor</li> </ul> </li> </ul> </li> </ul>
Public Instance Methods
list_item(node)
click to toggle source
# File lib/express_templates/components/tree_for.rb, line 71 def list_item(node) li { if @customize_block @customize_block.call(node) else text_node "#{node.name}#{"\n" if node.children.any?}" end if node.children.any? ul { list_items(node.children) } end } end
list_items(nodes)
click to toggle source
# File lib/express_templates/components/tree_for.rb, line 65 def list_items(nodes) nodes.each do |node| list_item(node) end end
root_node()
click to toggle source
# File lib/express_templates/components/tree_for.rb, line 57 def root_node if config[:root] && config[:root].respond_to?(:call) config[:root].call else send(config[:id]) end end