2011-05-14 23 views
2

這是一個非常奇怪的問題,不幸的是我不能提供大量信息,因爲我甚至不知道從哪裏開始診斷問題。我希望有人聽到神奇的知道該怎麼做,我很樂意澄清必要的。Heroku上的多部分表單路由問題

由於某種原因,我隨時使用Chrome在Heroku上提交一個帶有文件附件的新的多部分表單,我會在提交給默認的「索引」操作時發送 - 也就是我將發送到的頁面如果我提交了GET而不是POST。

我使用Rails的標準REST風格的路線,所以在我的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日誌時,它只報告一個GET到/ documents,從來沒有POST,後續處理可以解釋這一點。

任何幫助將不勝感激。我真的不知道從哪裏開始試圖解決這個問題。

更新: 我使用Chrome for Mac版本12.0.742.53測試版。

這裏是表格輸出。

<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="&#x2713;" /><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

我希望看到你的HTML'

'標籤和來自'耙路線'的相關路線。但既然你說它適用於本地/ Chrome和Heroku/Safari,它可能更像HTTP標頭那樣微妙。任何更多的信息將有助於。什麼版本的Chrome?我使用開發人員頻道,並且發現了一些重要的錯誤,這些錯誤永遠不會影響到更穩定的渠道。 – 2011-05-14 07:01:22

+0

感謝Jonathan - 只是更新了Chrome版本,路徑和表單輸出的問題。我會看看HTTP標頭,以防萬一有什麼事情發生。 – Cam 2011-05-14 14:42:44

回答

0

你能確認你在你看來有<%= csrf_meta_tag %>