我正试图弄清楚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方法存在于目标控制器中,但它是一个空的存根方法,仍然会产生此问题。
谢谢!
答案 0 :(得分:3)
Object#send
在Ruby中定义,在Rails框架中经常被调用。覆盖此方法是个坏主意。您需要选择其他名称。
答案 1 :(得分:0)
接受params,它只是一个参数错误。你没有在#send行动中接受任何争论。