2011-02-09 72 views
1

我有一個路由問題,我似乎無法得到我的頭。使用form_tag路由錯誤

我有一個項目資源,其中所有restfull操作按預期方式工作。

現在我想增加通過一個小的彈出窗體來更新一個特定屬性的能力。所以在這個彈出我使用:

form_tag (@project) do 
    text_field_tag :attribute_i_want_to_update, '' 
    submit_tag 'go' 

在控制器的更新行動,我打算處理這個特定的提交。但是,我收到一個路由錯誤,聲稱沒有路由到'/ projects/15'。我檢查了請求正在使用POST。很明顯,一條路徑存在於'/ projects/15'的POST(例如,定期更新路由正常工作併發布到該確切路由)。

我錯過了什麼?

THX您的時間,
歐文

回答

0

我有類似的問題,看它here

如果對象是不新的,然後rails(至少3個)會尋找PUT路由,而不是POST。如果您檢查真正發送給服務器的內容,例如使用Firebug,您將看到POST已經創建,但是有一個參數「_method = put」。

Rails將尋找PUT路由來更新現有對象,這與Field的REST定義一致。

+0

這就是thx! – ErwinM 2011-02-17 19:45:02

2

您是否嘗試過將其指定爲一個PUT請求:

 
form_tag(@project, :method => :put) do 
    text_field_tag :attribute_i_want_to_update, '' 
    submit_tag 'go'