Class: ExpressTemplates::Components::TreeFor
- Inherits:
-
Configurable
- Object
- Arbre::Component
- Base
- Configurable
- ExpressTemplates::Components::TreeFor
- Defined in:
- lib/express_templates/components/tree_for.rb
Overview
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>
Instance Method Summary collapse
Methods inherited from Configurable
#build, #config, emits, has_argument, has_option, #required_options
Methods inherited from Base
before_build, #build, builder_method_and_class, #builder_method_name, builder_method_name, contains, descendants, has_attributes, inherited, #initialize, #resource, tag
Constructor Details
This class inherits a constructor from ExpressTemplates::Components::Base
Instance Method Details
#list_item(node) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/express_templates/components/tree_for.rb', line 70 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) ⇒ Object
64 65 66 67 68 |
# File 'lib/express_templates/components/tree_for.rb', line 64 def list_items(nodes) nodes.each do |node| list_item(node) end end |
#root_node ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/express_templates/components/tree_for.rb', line 56 def root_node if config[:root] && config[:root].respond_to?(:call) config[:root].call else send(config[:id]) end end |