我遇到了一个我无法解释的问题:/
我为特定操作创建了一条路线。
它显示为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"}
此动作假设处理表单提交:
= form_for @upload, :url => {:controller => 'admin/lists', :action => 'update_attendance', :id => @upload.id}
顺便说一句:我也试过使用帮助器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应该匹配,并且rails应该失败生成视图...
所以,我的问题很简单:为什么这条路线不匹配?
希望有些人会看到明显的东西(可能是愚蠢的),否则我会需要一些xanax:D
感谢您的帮助:p
答案 0 :(得分: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