2015-06-10 103 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任何其他目的,那麼你可以使用它。

相關問題