0

这是我的路线文件的一部分:

resource :vendor do post 'modify_account' end

运行 rake routes 将生成以下行

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

4

2 回答 2

3

我有一个单例资源的类似问题,请检查您是否将 url 传递给 form_tag,我们使用 simple_form 并具有以下内容

<%= simple_form_for @enterprise_account, :url => enterprise_account_path do |f| -%>
于 2011-01-18T17:09:33.533 回答
0

事实证明,我认为问题出在我选择的“动作动词”上——我应该使用 PUT 而不是 POST。这是我的新路由文件,我唯一需要更改的是 _url 辅助方法名称。

resource :vendor do put 'account', :action => 'modify_account' end
于 2011-01-19T13:53:58.580 回答