• 仅当父级具有 css class="current" 时才可见
  • 发布于 2024-08-13 17:43:35 字数 1036 浏览 10 评论 0 原文

    我有一个名为 Taxons 的类别列表:

    Rails 代码在这里:

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

    现在的问题是,如果我单击视图中的特定分类法,它会向我显示所有父级的子级。所以...

    类别 1 后裔 1 后裔2 第2类 后裔 1 后裔2 第3类 后裔 1 Descendent 2

    当我想要的是: 第 1 类 后裔 1 后裔2 第2类 类别 3

    所选类别已附加 css 类 current。我的想法是某种 <% if :class => '当前%>显示 LI,否则什么也不显示。

    有人知道这是否可能吗?

    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?

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(2

    放飞的风筝 2024-08-20 17:43:35

    您不能重复使用相同的条件来添加类属性吗?

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

    所以你会得到:

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

    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 %>
    
    风追烟花雨 2024-08-20 17:43:35

    在控制器上添加即时变量。
    喜欢

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

    并改变这里

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

    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>
    
    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文