当索引部分没有结果时,如何在ActiveAdmin的索引页面上添加面板?

时间:2018-08-16 13:34:00

标签: ruby-on-rails ruby activeadmin

我正在使用红宝石宝石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中显示该国家的语言。 / p>

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

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

谢谢

1 个答案:

答案 0 :(得分:0)

子类并覆盖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中而不是在索引块中显示面板会更加干燥。您是否考虑过将国家/地区语言添加到侧边栏?免责声明:这是基于我对代码和文档的阅读,我自己还没有这样做。