这是一个非常奇怪的问题,不幸的是我无法提供大量信息,因为我什至不知道从哪里开始诊断问题。我希望有人能神奇地听到该做什么,我很乐意在必要时进行澄清。
由于某种原因,每当我使用 Chrome 在 Heroku 上提交带有文件附件的新的多部分表单时,我都会在提交到默认的“索引”操作时收到发送信息,即,如果我提交了,我将被发送到的页面GET 而不是 POST。
我在 Rails 中使用标准 RESTful 路线,因此我的 paths.rb 中有以下内容:
resources :documents do
member do
get :download, :follow
end
end
我的表格非常标准:
<%= form_for @document, :html => { :multipart => true } do |f| %>
<!-- Form code -->
<% end %>
但同样,这被视为 GET 而不是 POST 请求,因此我只是重定向到 /documents。即使我手动指定也是如此:method => :post
在表单定义中。
真正非常奇怪的事情是,这种情况只发生在 Heroku 上,并且只发生在 Chrome 上。这些表单在我使用 Chrome 的本地开发版本或使用 Safari 的 Heroku 上运行良好。
代码中的任何地方都没有发生重定向,当我检查 Heroku 日志时,它只向 /documents 报告 GET,而从来没有报告带有后续处理的 POST 可以解释这一点。
任何帮助将不胜感激。我真的不知道从哪里开始尝试解决这个问题。
更新:
我使用的是 Mac 版 Chrome,版本 12.0.742.53 beta。
这是表单输出。
<form accept-charset="UTF-8" action="/documents" class="new_document" enctype="multipart/form-data" id="new_document" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="q8Qv4q9BXdV4yWzsPx9cgZoFGhJHxj6Nzje/SSnYsYo=" /></div>
....
<input type="file" name="document[file]" />
....
</form>
这些路线似乎没有什么问题,其中包括:
POST /documents(.:format) {:action=>"create", :controller=>"documents"}