以下是我的路线档案的一部分:
resource :vendor do post 'modify_account' end
运行rake路线将生成以下行
modify_account_vendor POST /vendor/modify_account(.:format) {:action=>"modify_account", :controller=>"vendors"}
vendor POST /vendor(.:format) {:action=>"create", :controller=>"vendors"}
new_vendor GET /vendor/new(.:format) {:action=>"new", :controller=>"vendors"}
edit_vendor GET /vendor/edit(.:format) {:action=>"edit", :controller=>"vendors"}
GET /vendor(.:format) {:action=>"show", :controller=>"vendors"}
PUT /vendor(.:format) {:action=>"update", :controller=>"vendors"}
DELETE /vendor(.:format) {:action=>"destroy", :controller=>"vendors"}
/vendor(.:format) {:action=>"account", :controller=>"vendors"}
我可以在表单的操作中加载表单并验证URL是否正确,但是当我提交时,应用程序会抛出错误:
No route matches "/vendor/modify_account"
有关我可以采取哪些措施进行问题排查的任何建议? Firebug验证错误页面是POST类型。
答案 0 :(得分:3)
我对单例资源有类似的问题,请检查您是否将url传递给form_tag,我们使用simple_form并具有以下内容
<%= simple_form_for @enterprise_account, :url => enterprise_account_path do |f| -%>
答案 1 :(得分:0)
事实证明,我认为问题在于我选择的“动作动词” - 我本应该使用PUT而不是POST。这是我的新路由文件,我唯一要改变的是_url辅助方法名称。
resource :vendor do put 'account', :action => 'modify_account' end