1

我是 ActiveAdmin 的新手,当某些情况出现时,我试图显示大而大胆的警告。

阅读文档后,我不知道该怎么做。

我设法做的最好的事情是根据某些条件选择性地注册页面或不注册它们。这样做的目的是有选择地添加菜单元素。这在开发中有效,但在生产中失败,因为代码不会在每个请求中重新加载。

if warnings
  main_menu_title = fatal ? "Fatal Warnings" : "Warnings"

  ActiveAdmin.register_page main_menu_title do
    menu :priority => 99
  end
  ActiveAdmin.register_page "Warnings_job_count" do
    menu :label => "#{delayed_job_count} delayed jobs", :parent => main_menu_title, :priority => 1
  end
  ActiveAdmin.register_page "Warnings_job_errors" do
    menu :label => "#{delayed_job_error_count} delayed jobs with errors", :parent => main_menu_title, :priority => 2
  end
end

所以,简而言之,问题是......是否可以在某处声明一个块,它将在每个请求,所有页面中执行,并且能够向菜单添加元素,或者以某种方式修改标题部分?

非常感谢!
丹尼尔

4

1 回答 1

3

您可以按照此处的说明使用此内容 https://stackoverflow.com/a/7218598/807442

# app/admin/views/header_renderer.rb  
module ActiveAdmin
    module Views
      class HeaderRenderer
        def to_html
          title + custom_block + global_navigation + utility_navigation
        end

        def custom_block
          # Your custom block
        end
      end
    end
  end

您还可以像这样将项目添加到菜单中:

current_menu.add(main_menu_title , url_symbol, priority)

# For sub-items
main_menu = current_menu[main_menu_title]
main_menu.add(sub_item_title, url_symbol, priority)

但是,如果您添加这些,它们将在以后的请求中保留在那里。因此您可能还需要在每个请求中删除它们,然后只添加必要的。为此,请添加以下内容:

module ActiveAdmin
  class Menu
    def remove(name)
      item = self[name]
      return if item.nil?
      @items.delete(item)
    end
  end
end

您可以按名称删除。

于 2012-05-10T22:26:41.757 回答