【问题标题】:CSV download in Rails includes textarea tag - override Remotipart render?Rails 中的 CSV 下载包含 textarea 标签 - 覆盖 Remotipart 渲染?
【发布时间】:2016-04-28 16:59:23
【问题描述】:

我正在尝试在 Rails 中创建一个 CSV 文件以供下载,但无法让它只发送没有数据标签的 CSV。在我的控制器中,我有:

  csv_string = CSV.generate do |csv|                                                                                                               
    headers = ['Header 1', 'Header 2']                                  
    csv << headers                                                                                                                                 
    @matches.each do |match|                                                                                                                     
      csv << match                                                                                                                                 
    end                                                                                                                                            
  end                                                                                                                                              
  send_data(csv_string, :filename => filename, :layout => false) 

运行它的表单有:

=form_tag log_path, :id =>'log_search_form', :multipart => true, :remote=>true do                                                                    
    .search_fields                                                                                                                               
            .panel.panel-default                                                                                                                 
                    .panel-heading                                                                                                               
                            Search Log File:                                                                                                     
                            =file_field_tag :search                                                                                              
                            =submit_tag "Find Matches", :class=>'btn btn-primary btn-xs'                                                         

当我按“查找匹配”时,系统提示我下载一个 csv 文件,但第一行有:

<textarea data-type="text/csv" data-status="200" data-statusText="OK">Header 1

文件以

结尾
</textarea>

(旧版)代码使用 remotipart - 看来我需要阻止它覆盖渲染并添加 textarea。我怎样才能获得干净的 CSV 下载? 谢谢!

【问题讨论】:

  • 您是否复制粘贴了您的show.csv.erb 文件?因为你在第一行有错字。你必须关闭你的数组。
  • 看起来有东西试图显示状态标题信息,但它被错误地显示为文本区域 - 可能控制器或共享模板中的某处有代码试图显式发出状态标题?
  • csv.erb 确实有一个右括号 - 我复制错了。我会寻找一些状态标题代码 - 谢谢!

标签: ruby-on-rails csv download remotipart


【解决方案1】:

我以前从未见过这个多余的&lt;textarea&gt; 问题,但试试这个send_data(...) 参数化,它取自我维护的Rails 应用程序:

# inside your format.csv handler...
# set the filename and csv_string variables...
send_data(csv_string, :type => 'text/csv', 
                      :disposition => :attachment, 
                      :filename => filename)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 2021-08-01
    相关资源
    最近更新 更多