2011-08-30 90 views
0

在黃瓜測試,我得到以下錯誤:自定義路由不匹配航線

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,生病更新現在 –

回答

1

您需要刪除「:方法=>:把」

+0

我把它改成:method =>:post,然後我拿出:via =>:post,你的回答幫我找到了那個謝謝。 –

1

您的路線被聲明爲POST,但你正在做的形式PUT。修復路線或表單,然後你就可以釘住它。

+0

感謝瑞安,這是利瑪竇和你的答案是幫我找到了。 –

0

將離開這個作爲一個評論,但fromatting被劫持。 如果你不知道,你也可以定義這些路線略有不同,太:

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