Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 发送csv文件的数据返回文件文本,而不是文件_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails 发送csv文件的数据返回文件文本,而不是文件

Ruby on rails 发送csv文件的数据返回文件文本,而不是文件,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.1,你好!我想下载自动生成的文件qwerty.csv,但它只返回文本“12345”(无文件)。你能帮我吗 UI <script type="text/javascript"> function getCsv() { var ids = getSelectedRecordIds(); $.post('/payments/form_csv.csv', { ids: ids }, function(data) {}); } </script> function g

你好!我想下载自动生成的文件qwerty.csv,但它只返回文本“12345”(无文件)。你能帮我吗

UI

<script type="text/javascript">
function getCsv() {
    var ids = getSelectedRecordIds();
    $.post('/payments/form_csv.csv', { ids: ids }, function(data) {});
}
</script>
function getCsv() {
    var ids = getSelectedRecordIds();
    params = {ids: ids}
    post_to_url("/payments/form_csv", params);
}

但是没有文件提示…

哦,它可以在没有ajax的情况下工作,作为表单提交

本主题中存在相同的问题:

使表单成为非AJAX表单 我试过了…而且很有效

控制器

def form_csv
    csv_string = CSV.generate do |csv|
        csv << ["12345"]
    end

    respond_to do |format|
        format.csv {
            send_data csv_string, :type => 'text/csv; charset=utf-8; header=present', :disposition => "attachment; filename=qwerty.csv", :filename => "qwerty.csv"
        }
    end
end
def form_csv
    csv = get_csv
    send_csv(csv)
end

def get_csv
    result = CSV.generate do |csv|
        csv << ["12345"]
    end
    return result
end

def send_csv(csv)
    send_data csv, :type => 'text/csv; charset=utf-8; header=present', :disposition => 'attachment; filename=payments.csv'
end
其中post_to_url-是方法的来源 话题

毕竟

protect_from_forgery :except => :form_csv
在控制器中,禁用支付csv请求的身份验证令牌

丑陋的决定,但它帮助了我…也许还有更正确的方法吗

Viren
我试试看,谢谢

也许这只是一个如何注册应用程序/MIME类型的问题。在文件浏览器中单击*.csv文件时会发生什么情况?LibreOffice(或Excel)是否自动打开?未知/未注册的txt MIME类型可能始终显示在浏览器中。>>在文件浏览器中单击*.csv文件时会发生什么情况?LibreOffice(或Excel)是否自动打开?不幸的是,是的,Excel会自动打开它=(非常类似的主题(没有决定)——@AnDragFag我想这是一个过度智能的浏览器,在浏览器上显示CSV数据的情况。设置此选项并希望此帮助
config.action\u dispatch.x\u sendfile\u header=“x-sendfile”
protect_from_forgery :except => :form_csv