在ActiveAdmin中,我们可以使用index方法来定义要显示的列,并使用column方法来定义每一列的内容。要根据用户选项来隐藏和显示列,可以通过使用条件语句来实现。
下面是一个示例代码,演示如何在ActiveAdmin中根据用户选项来隐藏和显示列:
ActiveAdmin.register User do
config.sort_order = 'id_asc' # 设置默认的排序方式
# 定义index页面要显示的列
index do
selectable_column
column :id
column :name
column :email
column :created_at
# 根据用户选项隐藏和显示列
if params[:show_address] == 'true'
column :address
end
if params[:show_phone] == 'true'
column :phone
end
actions
end
# 定义用户选项筛选器
filter :name
filter :email
# 定义用户选项字段
sidebar "用户选项" do
form do |f|
f.inputs "选项" do
f.input :show_address, as: :boolean, label: "显示地址"
f.input :show_phone, as: :boolean, label: "显示电话"
end
f.actions
end
end
end
在上面的示例中,我们使用params[:show_address]和params[:show_phone]来获取用户选项的值。如果用户选择了显示地址,则显示包含:address的列。如果用户选择了显示电话,则显示包含:phone的列。
同时,我们还定义了一个用户选项的筛选器,以便用户可以方便地选择要显示的列。
请注意,上述示例中的代码是基于ActiveAdmin 2.0的,如果你使用的是其他版本,请根据相应的文档进行调整。