自定义路由不匹配航线

问题描述:

在黄瓜测试,我得到以下错误:自定义路由不匹配航线

No route matches "/companies/29/update_owner" 

我不知道我做错了,但是我相信它的一些愚蠢的事。

我有以下途径:

company_update_owner POST /companies/:company_id/update_owner(.:format) {:controller=>"companies", :action=>"update_owner"} 
company_set_owner  /companies/:company_id/set_owner(.:format) {:controller=>"companies", :action=>"set_owner"} 
     companies GET /companies(.:format)       {:action=>"index", :controller=>"companies"} 
       POST /companies(.:format)       {:action=>"create", :controller=>"companies"} 
    new_company GET /companies/new(.:format)      {:action=>"new", :controller=>"companies"} 
    edit_company GET /companies/:id/edit(.:format)     {:action=>"edit", :controller=>"companies"} 
     company GET /companies/:id(.:format)      {:action=>"show", :controller=>"companies"} 
       PUT /companies/:id(.:format)      {:action=>"update", :controller=>"companies"} 
       DELETE /companies/:id(.:format)      {:action=>"destroy", :controller=>"companies"} 

我曾尝试:

company_update_owner_path(:company_id => @company.id) 

company_update_owner_path(@company) 

更新:

= form_for @company, :url => company_update_owner_path(:company_id => @company.id), :method => :put do |f| 

任何帮助将不胜感激。

下面是代码在routes.rb中:

resources :companies do 
    match '/update_owner' => 'companies#update_owner', :as => :update_owner, :via => :post 
    match '/set_owner' => 'companies#set_owner', :as => :set_owner 
end 
+0

哎呀,我应该已经发布了整个的form_for,生病更新现在 –

您需要删除“:方法=>:把”

+0

我把它改成:method =>:post,然后我拿出:via =>:post,你的回答帮我找到了那个谢谢。 –

您的路线被声明为POST,但你正在做的形式PUT。修复路线或表单,然后你就可以钉住它。

+0

感谢瑞安,这是利玛窦和你的答案是帮我找到了。 –

将离开这个作为一个评论,但fromatting被劫持。 如果你不知道,你也可以定义这些路线略有不同,太:

resources :companies do 
    member do 
    post "update_owner" 
    get "set_owner" 
    end 
end