Rails - 导出CSV无法按预期工作(未定义方法)

时间:2017-11-27 17:43:29

标签: ruby-on-rails csv

我在Rails应用程序中进行CSV导出。 数据从后端API作为JSON数组返回。 但是现在我在export_data方法中收到"undefined method 'to_csv' for #Hash:0x007f149a5ff978"错误。

我在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

1 个答案:

答案 0 :(得分:0)

你的self.to_csv方法在控制器中没有意义

您需要将to_csv移至模型,该模型将数据序列化为csv

按照本教程实现:http://railscasts.com/episodes/362-exporting-csv-and-excel