2014-01-06 12 views

答えて

15

あなたはこれがあなたのためだけのある

collection_action :download_report, :method => :get do 
    users = User.where('created_at >= ?', Date.today - 1.month) 
     csv = CSV.generate(encoding: 'Windows-1251') do |csv| 
     # add headers 
     csv < [ #Some header ] 
     # add data 
     users.each do |user| 
     csv << [ user.created_at ] 
     end  
    end 
    # send file to user 
    send_data csv.encode('Windows-1251'), type: 'text/csv; charset=windows-1251; header=present', disposition: "attachment; filename=report.csv" 
    end 

    action_item only: :index do 
    link_to('csv report'), params.merge(:action => :download_report)) 
    end 

    index :download_links => false do 
    # off standard download link 
    end 

自身のCSV輸出を書くことができます。あなたのコードは別のものになる可能性があります

+0

私はこのようにUserテーブルにのみ追加しました。実際には、CSVのすべてのユーザーリストが返されていました。しかし、私は、特定の日付の間に作成されたユーザーリストのみを必要とします。たとえば、私は最後の月に登録されているユーザーのリストをご記入ください – SaravanaKumAr

+0

ありがとうございます。また、私はデフォルトのインデックスページのこのカスタムクエリをしたくない。私はこれをCSVエクスポートオプションのみにしたい。このscoped_collectionを通常のアクティブな管理者インデックス操作に対して無効にする方法。つまり、scoped_collectionはCSVエクスポートオプションに対してのみ実行する必要があります。 – SaravanaKumAr

+0

あなた自身の輸出を書くことができます –

1

あなたが例column_names - ["id", "updated_at"]の実際のCOLSからCOLS、ここでは、実際のcolsの配列とcolsを返すCOLUMN_NAMESことを引く必要はありませんどの列上記のコードで

# generate csv file of photo 
    def self.generate_csv 
    header = [] 
    csv_fname = "#{CSV_FILE_PATH}/images.csv" 
    options = {headers: :first_row} 
    photo_columns = column_names - ["id", "updated_at"] 
    photo_columns.map{|col| col == "created_at" ? header << "ScrapeDate" : header << col.classify} 
    CSV.open(csv_fname, "w", options) do |csv| 
     csv << header if File.exist?(csv_fname) && File.size(csv_fname) == 0 
     find_each(batch_size: 5000) do |photo| 
     csv << photo.attributes.values_at(*photo_columns) 
     end 
    end 
    end 

をしたい、このコード私たちはそれらを引き算する必要はありません。

+1

私はこのCSV生成をしたくありません。私が欲しいのは、アクティブな管理者CSVエクスポートオプションをカスタマイズする方法だけです。実際には、すべての値を戻すことがテーブルを形成します。私は毎月のデータを必要とします。 – SaravanaKumAr

+2

これはアクティブな管理者の内部方法であり、これは一部のユーザーまたはユーザーによって作成されたものです。 – HarsHarI

関連する問題