【发布时间】:2011-02-10 02:01:54
【问题描述】:
我已经解决这个错误 12 个小时了,我想我已经把这个问题缩小了。
如果我提供一个 post 方法,无论它是一个 json 对象还是一个字符串,IE 将允许最多约 3926 个字符。没有别的,不管它的形状或大小。只要它像这样被传递:
<form method="post" action="/generate_csv.csv?calc[][amount_paid]=0.0&calc[][date_awarded]=02%2F02%2F1981&calc[][date_paid]=12%2F31%2F1981&calc[][interest_rate]=12.0&calc[][principal]=1955.96&calc[][tf]=0.912328767123288&calc[][total_interest]=214.14&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1982&calc[][date_paid]=12%2F31%2F1982&calc[][interest_rate]=12.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=234.72&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1983&calc[][date_paid]=12%2F31%2F1983&calc[][interest_rate]=12.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=234.72&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1984&calc[][date_paid]=12%2F31%2F1984&calc[][interest_rate]=12.0&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=235.36&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1985&calc[][date_paid]=12%2F31%2F1985&calc[][interest_rate]=12.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=234.72&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1986&calc[][date_paid]=12%2F31%2F1986&calc[][interest_rate]=9.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=185.82&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1987&calc[][date_paid]=12%2F31%2F1987&calc[][interest_rate]=7.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=146.7&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1988&calc[][date_paid]=12%2F31%2F1988&calc[][interest_rate]=6.0&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=117.68&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1989&calc[][date_paid]=12%2F31%2F1989&calc[][interest_rate]=7.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=136.92&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1990&calc[][date_paid]=12%2F31%2F1990&calc[][interest_rate]=8.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=156.48&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1991&calc[][date_paid]=12%2F31%2F1991&calc[][interest_rate]=8.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=166.26&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1992&calc[][date_paid]=12%2F31%2F1992&calc[][interest_rate]=7.5&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=147.1&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1993&calc[][date_paid]=12%2F31%2F1993&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=107.58&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1994&calc[][date_paid]=12%2F31%2F1994&calc[][interest_rate]=3.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=68.46&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1995&calc[][date_paid]=12%2F31%2F1995&calc[][interest_rate]=3.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=68.46&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1996&calc[][date_paid]=12%2F31%2F1996&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=107.87&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1997&calc[][date_paid]=12%2F31%2F1997&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=107.58&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1998&calc[][date_paid]=12%2F31%2F1998&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=107.58&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F1999&calc[][date_paid]=12%2F31%2F1999&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=107.58&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2000&calc[][date_paid]=12%2F31%2F2000&calc[][interest_rate]=5.0&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=98.07&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2001&calc[][date_paid]=12%2F31%2F2001&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=107.58&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2002&calc[][date_paid]=12%2F31%2F2002&calc[][interest_rate]=6.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=117.36&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2003&calc[][date_paid]=12%2F31%2F2003&calc[][interest_rate]=3.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=58.68&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2004&calc[][date_paid]=12%2F31%2F2004&calc[][interest_rate]=2.0&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=39.23&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2005&calc[][date_paid]=12%2F31%2F2005&calc[][interest_rate]=1.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=19.56&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2006&calc[][date_paid]=12%2F31%2F2006&calc[][interest_rate]=2.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=39.12&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2007&calc[][date_paid]=12%2F31%2F2007&calc[][interest_rate]=4.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=78.24&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2008&calc[][date_paid]=12%2F31%2F2008&calc[][interest_rate]=5.5&calc[][principal]=1955.96&calc[][tf]=1.0027397260274&calc[][total_interest]=107.87&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2009&calc[][date_paid]=12%2F31%2F2009&calc[][interest_rate]=4.0&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=78.24&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2010&calc[][date_paid]=12%2F31%2F2010&calc[][interest_rate]=1.5&calc[][principal]=1955.96&calc[][tf]=1.0&calc[][total_interest]=29.34&calc[][amount_paid]=0.0&calc[][date_awarded]=1%2F1%2F2011&calc[][date_paid]=02%2F09%2F2011&calc[][interest_rate]=0.5&calc[][principal]=1955.96&calc[][tf]=0.10958904109589&calc[][total_interest]=1.07" accept-charset="UTF-8"><div style="margin: 0pt; padding: 0pt; display: inline;"><input type="hidden" value="✓" name="utf8"><input type="hidden" value="dbxrVZT2J42AB0QdMFi2XPggVGAQKtm8IkcuIj+U2jU=" name="authenticity_token"></div>
在所有其他浏览器中,这完全没问题通过。但 IE 不会容忍这一点过去。
任何人知道我怎样才能以一种小而精炼的方式,甚至是另一种方式传递相同数量的数据吗?
我在想,另一种方法是传递对象的别名,以便对象本身在控制器之间传递,但不通过视图。这是在没有将对象保存到数据库的情况下完成的。只是在这里大声思考。
接受任何想法。 :D
我的哈姆:
= form_tag generate_csv_path(:calc => @calc.results, :total_interest => @calc.total_interest, :per_diem => @calc.per_diem, :docket_num => @calc.docket_num, :our_file_num => @calc.our_file_num) do
= submit_tag 'Print CSV', :id => "print_csv"
更新
所以我遍历所有项目,试图将它们分解成更小的隐藏字段,它们都以散列形式出现
- @calc.results.each do |k, v|
= hidden_field :calc_result, "#{k[:total_interest]}"
生产:
"117.68"=>"",
"166.26"=>"",
"147.1"=>"",
"107.58"=>"",
"58.68"=>"",
太不可思议了。我想我最终可能能够创建一个值作为哈希值。这样 1 calc_result 就可以包含 5 个不同的属性。
【问题讨论】:
-
您为什么要发布到 URL?这些不应该是隐藏的表单字段吗?
-
我认为 IE 限制 URL 长度而不是帖子长度。
-
@Daniel - 我不在舒适区,因为我没有使用数据库来执行此操作。您将如何使用 hidden_fields 发布此表单?我会在上面更新我的 haml 所说的内容。
标签: ruby-on-rails internet-explorer forms post