我正在使用 Active Admin gem,我想隐藏或删除每个模型索引页面上的链接,以允许用户下载 CSV、XML 或 JSON 格式的数据。有什么办法可以做到这一点吗?
索引方法现在有一个选项
:download_links
,因此您可以根据需要省略下载链接。
例如:
ActiveAdmin.register Post do
index :download_links => false do
# whatever
end
end
您应该将其用作索引的选项,但不要将其与列函数分开。像这样使用它。
ActiveAdmin.register Post do
index :download_links => false do
column :title
column :body
end
end
不要这样使用它。这会让你的所有表格列都显示出来,而不是只显示你通过列函数指定的列
index download_links: false
index do
column :title
column :body
end
既然您问如何删除每个页面上的下载链接,所以最好的办法是在 config/initializers/active_admin.rb 文件中添加以下行。
config.namespace :admin do |admin|
admin.download_links = false
end
您还可以指定下载数据所需的选项,例如:
config.namespace :admin do |admin|
admin.download_links = [:pdf] # Now, it will only show PDF option.
end
注意:修改配置文件后请不要忘记重新启动服务器。
上面的 css 修复的替代方案是这个猴子补丁:
module ActiveAdmin
module Views
class PaginatedCollection
def build_download_format_links(*args)
''
end
end
end
end
对于最近访问此页面但对答案不满意的人,这对我有用:
1:隐藏所有下载:
app/admin/your_model.rb
ActiveAdmin.register YourModel do
index download_links: [nil]
...
2:仅显示 JSON。 (因为为什么你还需要其他东西?):
app/admin/your_model.rb
ActiveAdmin.register YourModel do
index download_links: [:json]
...
3:这是一个数组,因此您可以添加 XML、CSV 等:
app/admin/your_model.rb
ActiveAdmin.register YourModel do
index download_links: [:json, :xml, :csv]
...
ActiveAdmin 不允许进行此配置。使用 CSS 破解它。
在
app/assets/stylesheets/active_admin.css.scss
.index #active_admin_content #index_footer {
color: white; // Hides the 'Download text'. Pagination links are styled on their own
a {
display: none; // Hides the CSV .. links
}
}