即使rake路由显示,Rails 3应用程序也不会匹配路由

时间:2011-01-16 05:14:16

标签: ruby-on-rails-3 rails-routing

以下是我的路线档案的一部分:

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类型。

2 个答案:

答案 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