2014-09-01 2 views
0

나는 나의 컨트롤러 방법 send을 정의하려고 :레일즈 컨트롤러에서 send라는 메서드를 정의하는 방법은 무엇입니까?

class InvoicesController < ApplicationController 

    def send 
    end 

end 

을 그러나, 나는이 작업을 수행 할 때 오류 wrong number of arguments (2 for 0)을 얻고있다.

따라서 send은 Rails의 예약어로 간주됩니까?

어쨌든 내 컨트롤러에서 send 메서드를 정의하기위한 가능한 해결 방법은 무엇입니까?

어떤 아이디어 주셔서 감사합니다.

+3

'send'는 루비의 내장 메소드입니다. 다른 이름을 선택하십시오. 'send_invoice', 예를 들면. RESTful이되기를 원한다면'create'를 사용하십시오. –

+0

@SergioTulentsev +1 http://teachmetocode.com/articles/ruby-on-rails-accessing-controller-methods-from-your-view/ – RAJ

+0

오류에 대한 스택 추적은 무엇입니까? –

답변

1

루비에서 '보내기'메서드를 호출 할 수 없습니다. 보내기는 개체 방법 그것을 지정된 인수를 전달하는 기호로 식별 방법,

공공

전송 (* 인수)를 호출합니다. 을 전송할 수 있습니다. 이름이 obj의 기존 방법 인 과 충돌을 일으키는 경우입니다.

Send method

+1

예약어가 아닙니다. –

+0

네 말이 맞아. 수정 됨 –

0

이유 당신은 컨트롤러에서 send 방법은 send 이미 루비 Object 클래스의 방법이다 가질 수 없습니다.

그러나 약간 다른 각도에서 질문을하는 경우,이 경우 메서드의 특정 이름을 볼 수있는 주된 이유는 라우팅에 해당 이름을 지정하는 것입니다 (예 : http://localhost:3000/invoices/send). 또는 RESTful 리소스 /invoices/123/send.

원하는 경우 원하는 방법으로 호출하고 send 경로를 추가하여 메서드를 가리킬 수 있습니다.

그래서, 당신의 컨트롤러 :

다음
class InvoicesController < ApplicationController 

    def send_invoice 
    ... 
    end 

end 

config/routes.rb에서 :

resources :invoices do 
    member :send, to: :send_invoice 
end 
0

내가 post 또는 deliver 대신 전화 고려할 것 :

get 'invoices/send', to: 'invoices#send_invoice' 

또는 송장 리소스에 대한

관련 문제