2015-06-10 106 views
0

我正在将自定义数组导出到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" %> 

回答

0

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

format.csv { render text: DataService.to_csv } 

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

0

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

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

你已经遍历所有DataService在to_csv方法,所以我做的,你需要在export_all动作查询不件事。如果你想使用@list任何其他目的,那么你可以使用它。

相关问题