如何在Rails中使用Active Admin gem时删除面包屑?

NSS*_*NSS 4 ruby ruby-on-rails ruby-on-rails-3 activeadmin

我一直在使用Active admingem并希望breadcrumbsAdmin仪表板中删除它.为实现这一目标,我将此博客称为自定义TitleBar.

我做了以下步骤:

  1. 创建了我自己的类MyTitleBar并复制了TitleBar类的内容active_admin/views/title_bar.rb.
  2. 删除build_breadcrumb方法中的行build_titlebar_left.
  3. 删除了整个方法build_breadcrumb.
  4. 更新了活动管理员配置为:

    config.view_factory.title_bar = MyTitleBar

这很好用.

我的问题:

  1. 这是实现上述任务的正确方法吗?
  2. 另外,有什么方法可以删除breadcrumbs模型吗?

omg*_*tch 10

虽然这个解决方案可行,但肯定不太理想.我注意到看看ActiveAdmin gem它们是breadcrumb的配置选项:

ActiveAdmin.register Post do

  breadcrumb do
    [
      link_to('my piece', '/my/link/to/piece')
    ]
  end
end
Run Code Online (Sandbox Code Playgroud)

看起来它需要一个代码块,它返回一个links变量.查看TitleBar :: build_breadcrumb,如果未定义此配置选项,则只设置links为结果breadcrumb_links().最后,如果存在某种类型的链接数组,则将其格式化以进行打印.否则,该方法不返回任何内容.

因此,要解决您的问题,请尝试编写返回nil或空的代码块.我没有对此进行过测试,但是下面的代码块也是如此.这个想法是,如果你提供变量nil,它不应该通过links.present?测试,应该立即返回,而不是构建不需要的breadcrumb HTML.或者,一个空数组应该符合它所期望的类型,但是没有任何项目都不应该显示.我需要在本地测试,看看哪个在前端工作得更好.

/config/initializers/active_admin.rb:

# Return a Proc that simply returns an empty array
config.breadcrumb = Proc.new{ [] }
Run Code Online (Sandbox Code Playgroud)

  • 我在本地尝试过以上方法。似乎有魅力!正是我正在寻找的东西。谢谢。 (2认同)