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