这是一个非常奇怪的问题,遗憾的是我无法提供大量信息,因为我甚至不知道从哪里开始诊断问题。我希望有人听到神奇地知道该怎么做,我很乐意在必要时澄清。
出于某种原因,无论何时我使用Chrome在Heroku上提交带有文件附件的新的多部分表单,我都会在提交默认的“索引”操作时发送 - 也就是说,如果我将发送给我的页面,我提交了GET而不是POST。
我在Rails中使用标准的RESTful路由,所以我在routes.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可以解释这个。
非常感谢任何帮助。我真的不知道从哪里开始尝试解决这个问题。
更新: 我使用的是Chrome for Mac,版本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"}
答案 0 :(得分:0)
您可以确认视图中有<%= csrf_meta_tag %>
吗?