gpt4 book ai didi

ruby-on-rails - csv 文件的 send_data 返回文件的文本,而不是文件

转载 作者:行者123 更新时间:2023-12-03 00:48:48 30 4
gpt4 key购买 nike

美好的一天!我想下载自动生成的文件 qwerty.csv,但它仅返回文本“12345”(没有文件)。你能帮我吗?

用户界面

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

Controller

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

在控制台

Started POST "/payments/form_csv.csv" for 127.0.0.1 at 2012-06-18 18:18:11 +0400 
Processing by PaymentsController#form_csv as CSV
Parameters: {"ids"=>["18\n\t "]}
Rendered text template (0.0ms)
Sent data qwerty.csv (0.4ms)
Completed 200 OK in 2ms (Views: 0.4ms | ActiveRecord: 0.0ms)

但是没有文件提示...

最佳答案

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

这个主题也有同样的问题: http://www.ruby-forum.com/topic/111107

Make the form a non-AJAX form I try it… And it works!

Controller

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

用户界面

function getCsv() {
var ids = getSelectedRecordIds();
params = {ids: ids}
post_to_url("/payments/form_csv", params);
}

其中 post_to_url - 是来自的方法 JavaScript post request like a form submit主题。

毕竟

protect_from_forgery :except => :form_csv

在 Controller 中禁用 pay_csv 请求的身份验证 token 。

丑陋的决定,但它对我有帮助......也许有更正确的方法吗?

维伦,我会尝试一下,谢谢!

关于ruby-on-rails - csv 文件的 send_data 返回文件的文本,而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11085041/

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