2012-12-27 2 views
0

Ruby on Rails 라우팅 문제를 파악하려고합니다.레일 중첩 된 리소스 잘못된 인수 수

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

rake routes이 포함됩니다 : 여기에 routes.rb 파일의 관련 부분이다

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 메서드는 대상 컨트롤러에 있지만 빈 스텁 메서드이며 여전히이 문제를 생성하고 있습니다.

감사합니다.

답변

3

Object#send은 Ruby에 정의되어 있으며 Rails 프레임 워크에서 자주 호출됩니다. 이 방법을 재정의하는 것은 나쁜 생각입니다. 다른 이름을 선택해야합니다.

+0

이것은 정확하게 일어났습니다. 나는 액션을 정의하는 대신에 메소드를 오버라이드하고 있다는 사실을 깨닫지 못했습니다. 감사! –

0

params를 수락하십시오. 단지 인수 오류입니다. 당신은 #send 액션에서 어떤 인수도 취하지 않습니다.