gpt4 book ai didi

ruby-on-rails-3 - 使用 rails 3 中的表单按钮覆盖 response_to 格式

转载 作者:行者123 更新时间:2023-12-03 23:37:44 26 4
gpt4 key购买 nike

我有一组报告,这些报告使用 Rails 调用“respond_to”以各种格式显示,这样如果 URL 以 CSV 或 JSON 结尾,则以该格式生成报告。

我请求制作一个下载按钮,以便更轻松地获取报告,但由于报告具有日期范围等自定义设置,因此我需要能够提交一个表单并在表单中指定响应格式。这可能吗?怎么做到呢?

表格代码:

<%= 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 个按钮标签,其中值是格式,参数 'run' 将用于覆盖基于路由的格式。

响应代码(在 Controller 中生成报告后运行):
  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”的按钮中的按钮值来覆盖它的方法。

先感谢您!

最佳答案

我终于可以回答我自己的问题了,现在。所以这是答案:

我想出了如何实现这一点。您可以将按钮的名称设置为“格式”,并将值设置为要附加到 URL 的扩展名。

 <%= button_tag( 'HTML', :value => 'html', :name => 'format' ) %>
<%= button_tag( 'CSV', :value => 'csv', :name => 'format' ) %>
<%= button_tag( 'JSON', :value => 'json', :name => 'format' ) %>

简单地改变 params[:format] 是行不通的。您必须在操作运行之前将其传入。

关于ruby-on-rails-3 - 使用 rails 3 中的表单按钮覆盖 response_to 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159911/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com