Ruby on rails 3 -面包屑s_on_rails渲染两次



我试图让我的面包屑遵循我的导航历史通过不同的控制器

应用程序控制器

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

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

谢谢

首先,将home面包屑添加到ApplicationController中,因为它应该为每个请求注册。如果您的应用程序在这方面不能公开访问,那么忽略它,并在PublicPagesController中保留home面包屑,然后再使用这些方法。

然后更新你的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

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

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

相关内容

  • 没有找到相关文章

最新更新