我是ActiveAdmin的新手,我正试图在出现某些情况时显示大胆而大胆的警告。
在阅读完文档后我不知道如何做到这一点。
我设法做的最好的事情是根据某些条件选择性地注册页面或不注册它们。这样做的目的是有选择地添加菜单元素。 这在dev中有效,但在生产中失败,在每次请求中都没有重新加载代码。
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
所以,简而言之,问题是...... 是否可以在某个地方声明一个块,它将在每个请求中,在所有页面中执行,并且能够向菜单添加元素,或以某种方式修改标题部分?
非常感谢! 丹尼尔
答案 0 :(得分: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
您可以按名称删除。