【问题标题】:How do I create a dynamically generated breadcrumb in Rails 3?如何在 Rails 3 中创建动态生成的面包屑?
【发布时间】:2010-11-26 23:46:06
【问题描述】:

面包屑是导航元素,用于告诉用户他们在网站上的位置。

例如

首页 >> 项目 >> 阶段 >> 上传。

home、project、stages 和 uploads 是单独的控制器。

【问题讨论】:

    标签: ruby-on-rails-3


    【解决方案1】:

    我用了差不多 10 年几乎相同的代码...首先用 ASP 编写,然后是 C#、PHP,现在是 Rails:

    module NavigationHelper
        def ensure_navigation
            @navigation ||= [ { :title => 'Home', :url => '/' } ]
        end
    
        def navigation_add(title, url)
            ensure_navigation << { :title => title, :url => url }
        end
    
        def render_navigation
            render :partial => 'shared/navigation', :locals => { :nav => ensure_navigation }
        end
    end
    

    然后,在shared/navigation.html.erb

    <div class="history-nav">
        <% nav.each do |n| %>
            <%= link_to n[:title], n[:url] %>
        <% end %>
        <%= link_to yield(:title), request.path, :class => 'no-link' %>
    </div>
    

    您的常规视图:

    <% content_for :title, 'My Page Title' %>
    <% navigation_add 'My Parent Page Title', parent_page_path %>
    

    还有你的模板:

    <html>
    <head>
      <title> <%= yield :title %> </title>
    </head>
    <body>
      ...
      <%= render_navigation %>
      ...
      <%= yield %>
    </body>
    </html>
    

    【讨论】:

    • 这很好,很干!谢谢。将检查它以确保它对我有用。谢谢!
    • 顺便说一句,对于第一个 sn-p,我应该在哪里添加?到我的应用程序控制器?
    • 第一个是新的助手。你可以将它的代码添加到任何你想要的助手中,但我喜欢它自己的助手,NavigationHelper
    • 我喜欢这种方法。我之前使用嵌套布局,你的方法更适应Ruby-on-Rails3!谢谢
    • 好的逻辑不需要依赖任何其他的宝石伟大的工作人员。
    【解决方案2】:

    不使用&lt;% content_for :title, 'My Page Title' %&gt;可以更新以前的答案

      <div class="history-nav">
        <% nav.each do |n| %>
          <% unless n.equal? nav.last %>
            <%= link_to n[:title], n[:url] %>            
          <% else %>
            <%= n[:title] %>
          <% end %>
        <% end %>
      </div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-31
      • 1970-01-01
      • 2012-12-04
      • 1970-01-01
      • 1970-01-01
      • 2016-06-08
      • 2022-01-20
      • 1970-01-01
      相关资源
      最近更新 更多