2010-11-11 66 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