2012-12-27 39 views
0

我想弄清楚Ruby on Rails路由問題。下面是routes.rb中文件的相關部分:Rails嵌套資源錯誤的參數數量

resources :clients do 
    resources :campaigns do 
    resources :targets do 
     member do 
     post 'send' 
     end 
    end 
    end 
end 

rake routes包括這樣的:

send_client_campaign_target POST /clients/:client_id/campaigns/:campaign_id/targets/:id/send(.:format) targets#send 

然而,POST到/clients/1/campaigns/1/targets/30/send返回以下錯誤:

ArgumentError in TargetsController#send 

wrong number of arguments (2 for 0) 

的錯誤頁面顯示參數爲:

{"client_id"=>"1", 
"campaign_id"=>"1", 
"id"=>"30"} 

任何想法有什麼不對?我是對的,這是一個路由問題? send方法存在於目標控制器中,但它是一個空的存根方法,並且仍然會產生此問題。

謝謝!

回答

3

Object#send在Ruby中定義,並在Rails框架中頻繁調用。重寫此方法是個不錯的主意。你需要選擇另一個名字。

+0

這正是發生了什麼事。我沒有意識到我重寫了一種方法,而不是僅僅定義一個動作。謝謝! –

0

接受參數,它只是一個參數錯誤。您在#發送操作中沒有采用任何參數。