views:

180

answers:

2

I have a list of categories called Taxons:

The Rails code is here:

<div id="taxonomies" class="sidebar-item">
<% @taxonomies.each do |taxonomy| %>
  <ul class="navigation-list">

      <% taxonomy.root.children.each do |taxon| %>
        <li<%= ' class="current"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>

            <% if @taxon.nil? %>
            <% else %>

                <% @taxon.children.each do |taxon|%>
                    <li><%= link_to taxon.name, seo_url(taxon) %></li>
                <% end %>

            <% end %>
      <% end %>
    </ul>
<% end %>
</div>

The problem right now is that if I click a specific taxonomy in the view it shows me the children of all the parents. So...

Category 1 Decendent 1 Decendent 2 Category 2 Decendent 1 Decendent 2 Category 3 Decendent 1 Decendent 2

When what I want is: Category 1 Decendent 1 Decendent 2 Category 2 Category 3

The Selected category has css class current appended to it. My thought was some kind of <% if :class => 'current %> Show the LI, else show nothing.

Anyone know if this is possible?

A: 

Couldn't you just reuse that same condition for adding the class attribute?

if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon)

So you would have:

<% taxonomy.root.children.each do |taxon| %>
<li<%= ' class="current"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>

    <% if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>

        <% @taxon.children.each do |taxon|%>
            <li><%= link_to taxon.name, seo_url(taxon) %></li>
        <% end %>

    <% end %>
<% end %>
codr
A: 

add instant variable on your controller. like

def blablabla
  @current_page = Category.name
  if params[:id => @current_page]
    @current = "current"
  else
    @current = ""   
  end
end

and change here

<li<%= ' class="#{@current}"' if @taxon and ([@taxon] + @taxon.ancestors).include?(taxon) %>><%= link_to taxon.name, seo_url(taxon) %></li>
Kuya