【问题标题】:Rails - Export CSV not working as expected (undefined method)Rails - 导出 CSV 未按预期工作(未定义的方法)
【发布时间】:2018-05-11 00:59:54
【问题描述】:

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

【问题讨论】:

  • all.each ?到底是什么?
  • 您的 self.to_csv 方法应包含在模型中,而不是控制器中。即使您正确调用它,它也不适合您实际使用的 JSON 对象。您需要编写一个自定义序列化,将您的 @events_data JSON 对象转换为 CSV。
  • 对于我的应用,前端没有模型逻辑,应该来自后端。

标签: ruby-on-rails csv


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2019-04-22
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-11
    相关资源
    最近更新 更多