2010-11-11 33 views
0

我正面臨一個我無法解釋的問題:/Ruby on Rails 3,無法解釋的「路線不匹配」

我已經創建了一個特定行爲的路線。 它顯示成rake routes結果:

update_attendance_admin_module_instance_activity_instance_list 
POST 
/admin/module_instances/:module_instance_id/activity_instances/:activity_instance_id/lists/:id/update_attendance(.:format) 
{:action=>"update_attendance", :controller=>"admin/lists"} 

這個動作SI假設來處理表單提交:

= form_for @upload, :url => {:controller => 'admin/lists', :action => 'update_attendance', :id => @upload.id} 

BTW:我也嘗試過使用助手update_attendance_admin_module_instance_activity_instance_list_path但它是非常冗長而沒有按」不管工作。

然後,當表單提交:

Started POST "/admin/module_instances/2/activity_instances/2/lists/1/update_attendance" for 127.0.0.1 at 2010-11-11 11:16:48 +0100 

ActionController::RoutingError (No route matches "/admin/module_instances/2/activity_instances/2/lists/1/update_attendance"): 

通過路徑幫手成功生成了一個URL應該匹配與軌道發生故障產生的觀點,如果路線不匹配......

所以,我的問題很簡單:爲什麼這條路線不匹配?

希望一些人會看到明顯的東西(也可能是愚蠢的),否則我會需要一些阿普唑侖:d

感謝您的幫助:P

PS:使用時routes.rb file available here

回答

0

好更新操作(對象賦予form_for不爲空)。該方法必須是PUT而不是POST。

奇怪的部分是:爲什麼Rails沒有顯示此消息?

Started PUT "/admin/module_instances/2/activity_instances/2/lists/1/update_attendance" 

取而代之的是一個

Started POST "/admin/module_instances/2/activity_instances/2/lists/1/update_attendance" 

在結束時,解決方法是在路由文件簡單:

替換:

post :update_attendance 

由:

put :update_attendance