8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

将参数和格式传递给 rails 中的 respond_to 以下载文件

Javier Martinez Barriga 2月前

24 0

我正在构建简单的导出交易功能,单击即可下载 csv 或 json 格式的文件。如果我执行 <%= link_to \'CSV\', export_invoices_path(format: :csv), class: link_cl...

我正在构建简单的导出交易功能,点击即可下载 csv 或 json 格式的文件。

如果我做

 <%= link_to "CSV", export_invoices_path(format: :csv), class: link_classes %> |
      <%= link_to "JSON", export_invoices_path(format: :json, start_date: params[:start_date], end_date: params[:end_date]), class: link_classes %>
    

并在控制器中

  respond_to do |format|
      format.csv { send_data generate_csv(@invoices), filename: "transactions-#{Date.today}.csv" }
      format.json { send_data JSON.pretty_generate(@invoices.as_json), filename: "transactions-#{Date.today}.json" }
    end

它就是这样工作的。

但是当我用表单替换视图代码时,页面只是重新加载,并且没有下载任何文件

<%= form_tag export_invoices_path, method: :get, class: "mb-6" do %>
      <div class="flex justify-center gap-2 items-center">
        <p class="font-semibold">Start Date:</p>
        <%= date_field_tag :start_date, params[:start_date], class: "form-control" %>
        <p class="font-semibold">End Date:</p>
        <%= date_field_tag :end_date, params[:end_date], class: "form-control" %>
        <%= submit_tag "Export to CSV", name: nil, params: { format: :csv }, class: link_classes %>
        <%= submit_tag "Export to JSON", name: nil, params: { format: :json }, class: link_classes %>
      </div>
    <% end %>

我现在想使用表单,因为现在我想传递多个参数,例如 start_date 和 end_date,以便在导出期间引入交易过滤

它应该在表单提交时下载文件

帖子版权声明 1、本帖标题:将参数和格式传递给 rails 中的 respond_to 以下载文件
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Javier Martinez Barriga在本站《ruby-on-rails》版块原创发布, 转载请注明出处!
最新回复 (0)
  • hwnd 2月前 0 只看Ta
    引用 2

    你使用的 submit_tag 好像是 button_to , params: {format: :csv} 不适用于 submit_tag 。使用提交按钮执行此操作的唯一方法是覆盖表单操作:

    <%= form_tag export_invoices_path, method: :get do %>
      <%= submit_tag "Export to CSV",
        formaction: export_invoices_path(format: :csv) %>
    
      <%= submit_tag "Export to JSON", 
        formaction: export_invoices_path(format: :json) %>
    <% end %>
    

    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#formaction

返回
作者最近主题: