【问题标题】:How to add a panel on index page in ActiveAdmin when index section has no result?当索引部分没有结果时,如何在 ActiveAdmin 的索引页面上添加面板?
【发布时间】:2018-08-16 13:34:00
【问题描述】:

我正在使用 ruby​​ gem ActiveAdmin。在index 页面上,除了记录的索引列表之外,我还想显示一些面板。

我有如下代码:

ActiveAdmin.register City do
    belongs_to :country

    index do
        column :name
        column :population
        column :elevation

        panel 'Languages in Country' do
            ul do
                country.languages.each do |language|
                    li language
                end
            end
        end
    end
end

我的想法是,当我转到http://localhost:8000/admin/countries/3/cities 时,我将显示该国家/地区的城市列表,在此表下方,我将在单独的panel 中显示该国家/地区的语言。

我遇到的问题是,当一个国家/地区没有个城市时,语言面板也显示(即使它有语言)。

当一个国家没有城市数据时如何显示语言面板?

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby activeadmin


    【解决方案1】:

    子类化并覆盖ActiveAdmin::Views::IndexList,类似于:

    class IndexListWithCountryPanel < ActiveAdmin::Views::IndexList
      def build(index_classes)
        if current_filter_search_empty?
          panel 'Languages in Country' do ... end
        else
          index_classes.each do |index_class|
            build_index_list(index_class)
          end
        end
      end
    

    注册customized index page

    index as: IndexListWithCountryPanel do
      ... # as before
    end
    

    总是在 IndexListWithCountryPanel 中显示面板而不是索引块会更加干燥。您是否考虑过将国家语言添加到侧边栏?免责声明:这是基于我对代码和文档的阅读,我自己没有这样做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-02
      相关资源
      最近更新 更多