Rails嵌套资源错误的参数数量

时间:2012-12-27 00:01:27

标签: ruby-on-rails ruby routing

我正试图弄清楚Ruby on Rails路由问题。这是routes.rb文件的相关部分:

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

但是,/clients/1/campaigns/1/targets/30/send的POST会返回以下错误:

ArgumentError in TargetsController#send

wrong number of arguments (2 for 0)

错误页面将参数显示为:

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

知道什么是错的吗?我是对的,这是一个路由问题吗? send方法存在于目标控制器中,但它是一个空的存根方法,仍然会产生此问题。

谢谢!

2 个答案:

答案 0 :(得分:3)

Object#send在Ruby中定义,在Rails框架中经常被调用。覆盖此方法是个坏主意。您需要选择其他名称。

答案 1 :(得分:0)

接受params,它只是一个参数错误。你没有在#send行动中接受任何争论。