簡體   English   中英

如何在Ruby 1.9.2 + Rails3中將表數據導出為CSV文件?

[英]How to export table data as CSV file in Ruby 1.9.2 + Rails3?

我是一名學生,目前正在參加信息技術計划,並且獲得了一個項目,該項目需要我和我的團隊使用Rails 3 + Ruby 1.9.2創建動態表單構建器。 該動態表單構建器的關鍵功能是讓用戶導出其表單結果。 使用Ruby 1.9+ API中定義的CSV類實現CSV功能並沒有取得太大的成功。 我在form_results控制器中定義了一個“導出”功能,當前僅嘗試寫入CSV文件。 我的導出函數如下所示:

def export
 CSV.open("/public/results/results.csv", "wb") do |csv|
   csv << ["sample", "data"]
 end
end

在視圖中,我使用以下方法鏈接到該函數:

<%= link_to 'Download CSV', form_form_results_path(@form), :method => :export %>

我認為,如果我可以使CSV類的實現正常工作,那么我將可以完成其余邏輯,而不會遇到任何嚴重問題。 任何指導,意見或幫助將不勝感激。

謝謝,

馬茲M.

您對:method參數的使用不正確。 這應該用於指定http動詞。 此處的文檔: http : //api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

我建議在他們查看動態表單的操作中使用respond_to塊,並使用format.csv 這使您可以使用相同的操作,但只需調用操作URL,並將URL附加.csv即可以不同的格式呈現結果。

respond_to do |format|
  format.html
  format.csv { render :text => @dynamic_form.to_csv} #this will return txt in browser
  #format.csv { render :csv => @dynamic_form.to_csv} #with mime type (should prompt browser download)
end

然后,您可以在表單模型中創建to_csv def,該def將呈現csv並將其作為字符串返回。 您實際上不應該在控制器中放入任何類似的邏輯。 控制器用於創建實例變量(應在模型中完成創建邏輯)並轉發到適當的視圖。 該模型應包含您的大部分邏輯。 谷歌“瘦控制器,胖模型”的更多信息。

def to_csv
  csv = some_logic_here_to_create_csv_string
  csv
end

您的link_to調用可能看起來像這樣(只是將其寫在我的頭上。我不記得這是否是正確的語法):

<%= link_to 'Download CSV', form_form_results_path(@form, :format=>:csv) %>

您應該參考鏈接。 這個Railscast插曲介紹了以CSV格式或XLS格式導出數據。 您也可以參考鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM