如何在Rails 3中创建动态生成的痕迹?

mar*_*ion 11 ruby-on-rails-3

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

例如

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

家庭,项目,阶段和上传是独立的控制者.

Fáb*_*sta 25

我使用几乎相同的代码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
Run Code Online (Sandbox Code Playgroud)

然后,在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>
Run Code Online (Sandbox Code Playgroud)

你的常规观点:

<% content_for :title, 'My Page Title' %>
<% navigation_add 'My Parent Page Title', parent_page_path %>
Run Code Online (Sandbox Code Playgroud)

而你的模板:

<html>
<head>
  <title> <%= yield :title %> </title>
</head>
<body>
  ...
  <%= render_navigation %>
  ...
  <%= yield %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

  • 第一个是新助手.您可以将其代码添加到您想要的任何帮助程序中,但我喜欢它自己的帮助程序`NavigationHelper`. (2认同)