English 中文(简体)
<li> only visible when parent has css class="current"
原标题:

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?

问题回答

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 %>

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>




相关问题
CSS working only in Firefox

I am trying to create a search text-field like on the Apple website. The HTML looks like this: <div class="frm-search"> <div> <input class="btn" type="image" src="http://www....

image changed but appears the same in browser

I m writing a php script to crop an image. The script overwrites the old image with the new one, but when I reload the page (which is supposed to pickup the new image) I still see the old one. ...

Firefox background image horizontal centering oddity

I am building some basic HTML code for a CMS. One of the page-related options in the CMS is "background image" and "stretch page width / height to background image width / height." so that with large ...

Separator line in ASP.NET

I d like to add a simple separator line in an aspx web form. Does anyone know how? It sounds easy enough, but still I can t manage to find how to do it.. 10x!

热门标签