2009-06-18 4 views
1

좋아요. 연락처라는 테이블이 있습니다. 이 표에는 사람들이 있고 거기에 연락 정보가 있으며 선호하는 연락 방법 (전화, 주소, 이메일 또는 팩스)이 있습니다. 루비가 이메일 주소 표시 줄에 붙여 넣을 수있는 방식으로 사람들의 목록을 출력 할 수 있기를 원합니다.Ruby on Rails - 변수 내 변수

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.preferred_method %> >, 
<% end %> 

이 방법은 효과가 있지만 원하는 것은 수행하지 않으며 기대하지도 않았습니다. 따라서 선호하는 선택이 이메일 인 사람들의 목록에 대해 목록을 출력합니다.

마이크 < 이메일>, 조 < 이메일>, 존 < 주소>, 사라 < 전화>

대신 그것은 preferred_method를 호출하지만 내가 실제로하고 싶은 것은 것

Mike <[email protected]>, Joe <[email protected]>, John <2014 Street>, Sarah <111-111-1111> 

의 ...

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.<%=h contact.preferred_method %> >, 
<% end %> 

그래서 나는 그들의 preferred_method에 따라 contact.address 또는 contact.phone을 얻을 것입니다. 그러나 분명히 그것이 작동하지 않습니다. 그래서 변수에 <%=h contact.preferred_method %>을 할당하려고 생각했습니다.

x = contact.preferred_method 

그리고는

<% @contacts.each do |contact| %> 
     <%=h contact.contact_name %> < <%=h contact.x %> >, 
<% end %> 

가 있지만 그 중 하나가 작동하지 않습니다.

도움을 주시면 감사하겠습니다.

마이크

답변

2

send 메서드를 사용할 수 있습니다.

<%=h contact.send(contact.preferred_method.downcase) %> 

받는 개체에 기호 또는 문자열로 식별되는 메서드를 호출합니다. 나는 당신의 메서드 이름은 '이메일'하지 '이메일'

을 가정하기 때문에

contact.send(:email) 
contact.send('address') 

참고 나는 contact.preferred_method에와 downcase을 설정