加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 01:33:12 所属栏目:百科 来源:网络整理
导读:我有一组使用Rails调用“respond_to”以各种格式显示的报告,这样如果URL以CSV或 JSON结尾,则报告以该格式生成. 我有一个请求来制作下载按钮以便更轻松地抓取报告,但由于报告具有日期范围等自定义,我需要能够提交一个表单并在表单中指定响应格式.这可能吗?怎
我有一组使用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”将用于覆盖基于路径的格式.

响应代码(在控制器中生成报告后运行):

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',:name => 'format' ) %>
 <%= button_tag( 'CSV',:name => 'format' ) %>
 <%= button_tag( 'JSON',:name => 'format' ) %>

简单地更改参数[:format]不起作用.您必须在操作运行之前传递它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读