2017-11-27 6 views
1

私はCSV Export in Rails Appを行っています。 データはバックエンドAPIからJSON配列として返されます。 しかし、今は、export_dataメソッドに"undefined method 'to_csv' for #Hash:0x007f149a5ff978"というエラーが表示されています。Rails - CSVが期待どおりに動作しない(未定義のメソッド)

config/application.rbファイルにrequire "csv"を含めて、サーバーを再起動しました。

私が間違っていることがわかりません。

index.html.erb

<a href="usage_metrics/export_data.csv"><button class="btn btn-default">Export to CSV</button></a> 

usage_controller(フロントエンド)

 def export_data 
     rest_resource = RestClient::Resource.new(ENV['USAGE_METRICS_API'] + '/get_events_data', :verify_ssl => false) 
     request = rest_resource.get :Authorization => cookies.signed[:remember_token], :content_type => 'application/json' 
     @events_data = JSON.parse(request) 


     respond_to do |format| 
      format.html 
      format.csv { send_data @events_data.to_csv } 
     end 
     end 


     def self.to_csv 
     CSV.generate do |csv| 
      csv << column_names 
      all.each do |event| 
      csv << event.attributes.values_at(*column_names) 
      end 
     end 
     end 
+0

'all.each'?すべて何ですか? – xeon131

+2

あなたの 'self.to_csv'メソッドは、コントローラではなく、モデルに含まれることを意図しています。たとえそれを正しく呼び出すとしても、あなたが実際に使っているJSONオブジェクトには適していません。 '@ events_data' JSONオブジェクトをCSVに変換するカスタムのシリアライズを書く必要があります。 –

+0

私のアプリケーションでは、フロントエンドにモデルロジックがなく、バックエンドから来るはずです。 – Wings2fly

答えて

0

コントローラ

あなたに意味がありませんあなたのself.to_csv方法データをCSV形式にシリアル化するモデルto_csvに移動する必要があります

これを実装するためにこのチュートリアルに従ってください:http://railscasts.com/episodes/362-exporting-csv-and-excel

関連する問題