1

アクティブな管理者の csv パーシャルを上書きする方法はありますか? そうでない場合、属性ではなくコンテンツを参照する列を印刷する方法はありますか? 例:

私のモデル User には属性 :name がありますが、各 user.name ごとに行を印刷したくありません。各 User.name の列を印刷し、次の行で名前が「関連付けられている」別の属性に関連付けたいと思います" 彼らの last_name のようなものなので、次のようになります:

Name       Jhon     Adam      Chuck   etc..
LastName   Adams    Jhons      Guy
4

1 に答える 1

4

特定のモデルの CSV のビュー テンプレートをオーバーライドして、CSV 出力を生成する前にデータを転置することができます。

CSV ビュー テンプレート

これが User モデルの場合を想定して、次のビュー ファイルを作成しますapp/views/admin/users/index.csv.erb。ファイルが正しいサブディレクトリにあることが重要です。デフォルトの ActiveAdmin 設定では、ディレクトリはapp/views/admin.

<%-
  # This is a modification of the default index.csv.erb template found at:
  # https://github.com/gregbell/active_admin/blob/master/app/views/active_admin/resource/index.csv.erb

  require 'csv'

  default = active_admin_application.csv_options
  options = default.merge active_admin_config.csv_builder.options
  columns = active_admin_config.csv_builder.columns

  # Collect the data in an Array to be transposed.
  data = []
  data << columns.map(&:name)
  collection.each do |resource|
    data << columns.map do |column|
      call_method_or_proc_on resource, column.data
    end
  end

  csv_output = CSV.generate(options) do |csv|
    data.transpose.each do |row|
      csv << row
    end
  end
%>
<%= csv_output.html_safe %>

ActiveAdmin リソース

ActiveAdmin User リソースで CSV を通常どおり定義できるようになり、出力が転置されます。

ActiveAdmin.register User do
  csv do
    column :id
    column :first_name
    column :last_name
  end
end

出力

Id,1,2
First Name,Alexis,Charles
Last Name,Carvajal,Maresh
于 2013-11-15T16:13:05.227 に答える