您可以通過創建自己的「渲染」,其中典型的請求與響應的HTML在您的控制器爲您的CSV請求作出迴應或JSON,你也可以讓你的控制器用PDF格式對你的請求做出迴應,或者像你的情況一樣使用CSV格式,下面是一些合理的文檔:http://api.rubyonrails.org/classes/ActionController/Renderers.html。
總之,你可以做這樣的事情(從文檔):
創建CSV渲染:我們用啞劇的CSV MIME類型
ActionController::Renderers.add :csv do |obj, options|
filename = options[:filename] || 'data'
str = obj.respond_to?(:to_csv) ? obj.to_csv : obj.to_s
send_data str, type: Mime[:csv],
disposition: "attachment; filename=#{filename}.csv"
end
注意,因爲它涉及使用Rails 。對於自定義渲染器,您需要使用Mime::Type.register
註冊MIME類型。
要在控制器動作使用CSV渲染器:
def show
@csvable = Csvable.find(params[:id])
respond_to do |format|
format.html
format.csv { render csv: @csvable, filename: @csvable.name }
end
end
@SkunkDog,我的回答對你有幫助嗎?如果是的話,你可以標記它是正確的? :) –
我還沒有機會測試這個,我今天下午會證實。 – SkunkDog
對不起,我花了一段時間才把頭繞過來。我認爲你所描述的將允許我基本下載顯示頁面作爲CSV,對吧?但是,我正在運行一個生成大型數據表的API調用。我希望將此調用的結果作爲CSV下載。由於每個表中有很多條目(比如1000+),我不想將每個條目保存爲自己的數據庫條目。我如何允許下載表格? – SkunkDog