ActiveAdmin - 有没有办法生成 CSV 组合两个模型 belongs_to 一个父模型?
ActiveAdmin - Is there a way to generate a CSV combining two models that belongs_to a parent one?
我有一个模型 User
,还有两个模型,Foo
和 Bar
belongs_to :user
。
用户模型有 has_many :foo
和 has_many :bar
.
这些关联在 rails
应用级别,而不是 active_admin
级别。
我想要的是从我已有的用户显示页面生成一个 CSV,它结合了用户各自的 foo
和 bar
属性。
Foo 和 Bar 共享一些属性,但不是全部,所以我知道某些字段将留空。
有没有办法在 Active Admin 中执行此操作?
我尝试使用 csv do
块,但无法将所有 Foo
和 Bar
放入同一个 csv 中。
您可以编写自己的 csv 生成代码。下面是一些可以帮助您入门的脚手架代码:
sidebar :foos_bars_as_csv, :only => [:show] do
a(href: foos_bars_as_csv_admin_user_path) do
'Download as csv'
end
end
member_action :foos_bars_as_csv, :method => :get do
# define your own headers
csv_headers = ["Header 1", "Header 2"] # customize yourself
foos = resource.foos
bars = resource.bars
rawcsv = CSV.generate(:col_sep => ",") do |csv|
# here you could add headers
# csv << csv_headers
foos.each do |foo|
csv << foo.build_csv_row # or something like this
end
bars.each do |bar|
bar << bar.build_csv_row
end
csv << csv_row
end
end
send_data(rawcsv, :type => 'text/csv charset=utf-8; header=present', :filename => Time.now.strftime("%Y%m%e-%H%M%S) + "User#{resource.id}-FoosnBars" and return
end
祝你好运!
我有一个模型 User
,还有两个模型,Foo
和 Bar
belongs_to :user
。
用户模型有 has_many :foo
和 has_many :bar
.
这些关联在 rails
应用级别,而不是 active_admin
级别。
我想要的是从我已有的用户显示页面生成一个 CSV,它结合了用户各自的 foo
和 bar
属性。
Foo 和 Bar 共享一些属性,但不是全部,所以我知道某些字段将留空。
有没有办法在 Active Admin 中执行此操作?
我尝试使用 csv do
块,但无法将所有 Foo
和 Bar
放入同一个 csv 中。
您可以编写自己的 csv 生成代码。下面是一些可以帮助您入门的脚手架代码:
sidebar :foos_bars_as_csv, :only => [:show] do
a(href: foos_bars_as_csv_admin_user_path) do
'Download as csv'
end
end
member_action :foos_bars_as_csv, :method => :get do
# define your own headers
csv_headers = ["Header 1", "Header 2"] # customize yourself
foos = resource.foos
bars = resource.bars
rawcsv = CSV.generate(:col_sep => ",") do |csv|
# here you could add headers
# csv << csv_headers
foos.each do |foo|
csv << foo.build_csv_row # or something like this
end
bars.each do |bar|
bar << bar.build_csv_row
end
csv << csv_row
end
end
send_data(rawcsv, :type => 'text/csv charset=utf-8; header=present', :filename => Time.now.strftime("%Y%m%e-%H%M%S) + "User#{resource.id}-FoosnBars" and return
end
祝你好运!