导出为CSV的Rails缺少逗号分隔符

时间:2015-06-10 21:05:48

标签: ruby-on-rails export-to-csv

我正在将自定义数组导出到csv文件。一切都正确导出,但它不是在每个实例之间添加逗号分隔符。我的代码中缺少什么来添加这种分离?

data_services_controller

def export_all
 @list = DataService.all
  respond_to do |format|
  format.csv { render text: @list.to_csv }
end
end

data_service.rb

def self.to_csv
  CSV.generate do |csv|
    csv << ["Data Product", "Requestor"]
  all.each do |dp|
    csv << [dp.name ,dp.requestor]
  end
end
end

list.html.erb

<%= link_to "Export to CSV", export_all_data_services_path(:format => :csv), :class => "btn btn-primary" %>

2 个答案:

答案 0 :(得分:0)

@ list.to_csv正在调用DataServive.all返回的关系上的to_csv方法,而不是您定义的类方法。

format.csv { render text: DataService.to_csv }

调用你的to_csv类方法。你不会需要@list实例变量。

答案 1 :(得分:0)

我注意到在控制器中调用了一个错误的方法,你不能用实例变量调用类方法。您可以按照以下步骤重写控制器操作,并使用send_data而不是render text

def export_all
    respond_to do |format|
     format.csv { send_data DataService.to_csv }
    end
end

您已经在to_csv方法中迭代所有DataService,因此我不需要在export_all操作中进行查询。如果您想使用@list任何其他目的,那么您可以使用它。