在RoR控制器中,我嘗試響應表單。強制將不同的響應格式導入到軌道中的表單
基於對我的控制器中的表單輸入的一些處理,我希望能夠選擇以CSV或HTML格式進行響應。 在HTML中響應正常,但CSV產生406不可接受。有沒有辦法強制我的迴應,以便用戶打印或下載一個CSV文件?
這裏是我的控制器:
#extract
respond_to do |format|
if condition
format.csv { render_csv("licenses_#{Time.now.strftime("%Y%m%d")}") }
else
format.html { render action: "new" }
format.json { render json: @license.errors, status: :unprocessable_entity }
end
end
#extract
def render_csv(filename = nil)
filename ||= params[:action]
filename += '.csv'
if request.env['HTTP_USER_AGENT'] =~ /msie/i
headers['Pragma'] = 'public'
headers["Content-type"] = "text/plain"
headers['Cache-Control'] = 'no-cache, must-revalidate, post-check=0, pre-check=\
0'
headers['Content-Disposition'] = "attachment; filename=\"#{filename}\""
headers['Expires'] = "0"
else
headers["Content-Type"] ||= 'text/csv'
headers["Content-Disposition"] = "attachment; filename=\"#{filename}\""
end
render :layout => false
end
試圖通過添加以下內容到形式的行動('some_action_path(格式:CSV)'),然後在你的控制器加上'的respond_to做|格式| format.html format.csv end' – anusha 2014-10-30 05:59:19
一旦提交表單,是否沒有辦法在Controller中做出響應格式的決定? – Antzi 2014-10-30 06:05:21
以確定只有我們正在發送格式參數 – anusha 2014-10-30 06:08:31