2009-07-09 3 views
0

아래의 두 가지 예를보고하십시오 경로를 반환하지 않습니다: foo는 => self.controller_name.to_s + "_path"

irb(#<ActionView::Base:0x2863d58>):030:0> paintings_path 
=> "/some-nice-alias-path" 

irb(#<ActionView::Base:0x2863d58>):029:0> self.controller_name.to_s + "_path" 
=> "paintings_path" 

가 어떻게 대신 문자열의 경로를 반환합니까? 내 응용 프로그램 도우미에서 컨트롤러 경로를 호출해야합니다.

감사합니다. Asbjørn Morell

답변

3
send(self.controller_name.to_s + "_path") 

send on self를 사용하지 않으면 원하는대로 커널로 이동합니다. 정확한 컨텍스트에 따라 자아가 작동 할 수도 있습니다.

+0

Perfect. 매력처럼 일했습니다. :) – atmorell

1

그냥 추측하지만, 뭔가 같은 :

method = self.controller_name.to_s + '_path' 
self.send(method.to_sym) 

트릭을 할 아마도 것입니다. send 메서드는 심볼을 가져 와서 해당 심볼과 일치하는 메서드를 대상 객체에서 실행합니다.

0

ActiveRecord 인스턴스가있는 경우 polymorhpic_path이 필요에 맞을 것입니다. 경로 인식 경로 생성 방법을 사용하는 것이 취 약한 문자열 수정 작업보다 바람직합니다.

관련 문제