2011-04-08 3 views
0

@discussable 클래스 유형에 따라 new_course_discussion_path (@discussable) 또는 new_group_discussion_path (@discussable)를 동적으로 갖고 싶습니다. 이 메서드에 메시지 (@discussable)를 전달하려면 어떻게해야합니까? 나는 시도했다 :메시지를 동적 메서드로 전달

그러나 이것은 "틀린 인수의 수 (1에 대해 0)"라고 말한다. 나는 레일을 처음 사용합니다. 도와주세요! 감사.

는 업데이트 : 는 현재, 전체 라인은 경로 헬퍼 방법없는 클래스이다

= link_to '>New Discussion', "new_#{@discussable.class.to_s.downcase}_discussion_path".constantize(@discussable) 

답변

2
send "new_#{@discussable.class.to_s.downcase}_discussion_path", @discussable 

입니다. 컨트롤러, 뷰 및 도우미 메서드에서 액세스 할 수 있으며 send 호출을받을 자격이 없으면 자체 메서드를 호출합니다.

+0

감사합니다. 하지만 작동하지 않습니다. 예기치 않은 tSTRING_BEG, 기대하는 keyword_do 또는 '{'또는 '(' ... nk_to '> 새 토론', 보내기 'new _ # {discussable.class.to_s ... 전체 내용은 다음과 같습니다. 새 토론, '보내기'new_#{@discussable.class.to_s.downcase}_discussion_path ', @discussable' – randomor

+0

다른 메서드 호출로 보내기 위해 호출을 포함시키는 방법은 다음과 같습니다. (... [토론]) –

+0

네! 문제를 해결합니다. 고마워요 Paul! – randomor

1

당신은 Object.send method을 찾고 있습니다.

+0

고마워요.하지만 obj.send (symbol [, args ...])를 쳐다 봤습니다. → obj 3 분 동안은 여전히 ​​솔루션을 문서와 연결할 수 없습니다. 문서에서 탐색하기에는 여전히 너무 얕습니다. :) – randomor

관련 문제