AnD*_*Fag 7 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>
Run Code Online (Sandbox Code Playgroud)
调节器
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
Run Code Online (Sandbox Code Playgroud)
在控制台中
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)
Run Code Online (Sandbox Code Playgroud)
但是没有文件提示......
Ow,它没有ajax,作为表单提交工作!
该主题存在同样的问题:http: //www.ruby-forum.com/topic/111107
使表单成为非AJAX表单我尝试它...它的工作原理!
调节器
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
Run Code Online (Sandbox Code Playgroud)
UI
function getCsv() {
var ids = getSelectedRecordIds();
params = {ids: ids}
post_to_url("/payments/form_csv", params);
}
Run Code Online (Sandbox Code Playgroud)
其中post_to_url - 来自JavaScript post请求的方法, 如表单提交 主题.
毕竟
protect_from_forgery :except => :form_csv
Run Code Online (Sandbox Code Playgroud)
在控制器中禁用pay_csv请求的身份验证令牌.
丑陋的决定,但它有助于我......可能有更正确的方法吗?
Viren,我会试一试,谢谢!
| 归档时间: |
|
| 查看次数: |
10846 次 |
| 最近记录: |