2010-12-22 128 views
0

這與STI and form_for problem類似,但在那裏給出的答案對於rails 3並沒有很好的表現,並給出了棄用警告。但是,如果我嘗試使用新的語法,我會得到一個令人困惑的結果。這是問題。sti and form for rails問題3

的event_enquiry事件是一種查詢,並在舊的語法,我會做

<%= form_for(:event_enquiry, @enquiry, :remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions} 

這將生成路徑預期 /event_enquiries/1/build_provider_versions 並在日誌中我看到 開始POST「/event_enquiries/1/build_provider_versions」爲127.0.0.1在2010-12-22 22時零零分11秒+0000

但是這給出了一個棄用警告

DEPRECATION WARNING: Using form_for(:name, @resource) is deprecated. Please use form_for(@resource, :as => :name) instead. 

不過,儘管新的語法

<%= form_for( @enquiry, :as => :event_enquiry,:remote => true, :url=>{:id=>@enquiry.id,:action=>:build_provider_versions} 

似乎產生相同的路線,並在日誌中我得到完全相同的消息 開始POST「/ event_enquiries/1/build_provider_versions」爲127.0.0.1,在2010- 12-22 22:01:58 +0000 這條路線顯然不存在!

的ActionController :: RoutingError(無路由匹配 「/ event_enquiries/1/build_provider_versions」):

我已經來回通過這一點,並不能看到發生了什麼事。有沒有人有線索發生了什麼?

很明顯,我很高興現在回到舊的語法,但我有一種討厭的感覺,這裏有什麼東西壞了......還是我只是在愚蠢?

回答

0

只需添加

:html => {:method => :put}