breadcrumbs_on_rails渲染两次

时间:2013-01-19 16:51:06

标签: ruby-on-rails-3 breadcrumbs

我试图让我的面包屑通过不同的控制器跟踪我的导航历史记录

应用程序控制器

add_breadcrumb 'Home', root_path

在我的public_pages控制器

class PublicPagesController < ApplicationController


def index

end

def news
 add_breadcrumb "News", news_path
 add_breadcrumb "Contact us", contact_path
end

def contact_us
add_breadcrumb "News", news_path
add_breadcrumb "Contact us", contact_path
end

所以我有另一个名为private_pages的控制器,只有在用户登录时才能访问,并且它有自己的root_path,

在不同控制器中访问不同的操作时,如何显示面包屑

由于

1 个答案:

答案 0 :(得分:1)

首先,将home面包屑添加到ApplicationController,因为应该为每个请求注册。如果您的申请在这方面无法公开访问,请忽略该申请,并在方法之前将home面包屑保留在PublicPagesController

然后,更新您的PublicPagesController

class PublicPagesController < ApplicationController

  def index
  end

  def news
    # to show Home / Contact Us / News
    add_breadcrumb "Contact Us", news_path
    add_breadcrumb "News", news_path
  end

  def contact_us
    add_breadcrumb "Contact Us", news_path
  end

end

以上假设add_breadcrumb "Home", news_path中调用了ApplicationController

关于bootstrap冲突或整合,请参阅以下两项:

https://github.com/weppos/breadcrumbs_on_rails/issues/24
https://gist.github.com/2400302

如果您想根据用户是否登录来修改home面包屑,请在before_filter添加ApplicationController

before_filter :set_home_breadcrumb

def set_home_breadcrumb
  if user_signed_in?
    add_breadcrumb "Home", :user_home_path
  else
    add_breadcrumb "Home", :root_path
  end
end