2
我有一組使用Rails調用「respond_to」以各種格式顯示的報表,例如,如果URL以CSV或JSON結尾,則生成報表格式。在rails 3中用表單按鈕覆蓋respond_to格式
我有一個請求來製作一個下載按鈕,使抓取報告更容易,但由於報告具有日期範圍等自定義功能,因此我需要能夠提交一個表單並在表單中指定響應格式。這可能嗎?如何做呢?
表單代碼:
<%= form_tag('', method: 'get') do %>
<%= hidden_field_tag('s',params[:s]) %>
<%= select_tag "date_interval", options_from_collection_for_select(Admin::ReportController::DATE_INTERVALS.to_a, 'first', 'last') %>
<%= label_tag('start_at','Start at') %> <%= text_field_tag('start_at', @start_at, class: 'datetimeselect') %>
<%= label_tag('end_at','End at') %> <%= text_field_tag('end_at', @end_at, class: 'datetimeselect') %>
<script>
$('.datetimeselect').datetimepicker({format: "Y-m-d H O"});
</script>
<%= button_tag('HTML', :value => 'html', :name => 'run') %>
<%= button_tag('CSV', :value => 'csv', :name => 'run') %>
<%= button_tag('JSON', :value => 'json', :name => 'run') %>
<% end %>
注3個鍵標籤之上,其中的值是格式和PARAM「運行」將被用於替代基於路由的格式。
迴應到代碼(報告後,運行在控制器中生成):
def format_results
respond_to do |format|
format.html {
# default render of HTML table
}
format.json {
render json: { results: @results[:results], header: @results[:header], name: @results[:name], stats: { rows: @results.count } }, layout: false
}
format.csv {
render text: report_to_csv(@results), content_type: 'text/csv', layout: false
}
end
end
當我指定的URL,該工程的延伸,我正在尋找一種方法來重寫使用上面名爲「run」的按鈕中的按鈕值。
預先感謝您!
謝謝你克里斯,被困在這個多年 – user3868832