2009-06-18 171 views
1

好的。所以我有一個叫聯繫人的表。在這個表格中,我有人和那裏的聯繫信息,以及他們的首選聯繫方式(電話,地址,電子郵件或傳真)。我希望能夠以可以將粘貼複製到電子郵件地址欄或類似內容的方式讓ruby輸出所述人員的列表。Ruby on Rails - 可變內部變量

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

這是有效的,但它沒有做我想做的事,我沒有想到它會發生。因此,對於首選電子郵件的人員列表,將其輸出爲。

邁克<電子郵件>,喬<電子郵件>,約翰<地址>,莎拉<電話>的

代替

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

它調用了preferred_method,但我真正想要做的是...

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

所以我會得到contact.address或contact.phone取決於他們的preferred_method。但顯然這是行不通的。所以我想到試圖將 <%=h contact.preferred_method %>分配給一個變量。

x = contact.preferred_method 

再有

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

但這並不工作。

任何幫助,將不勝感激。

Mike

回答

2

您可以使用send方法。

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

調用由接收對象上的符號或字符串標識的方法。

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

注意我設置了一個contact.preferred_method因爲downcase我假設你的方法名稱爲「郵件」而不是「電子郵件」