Ruby on Rails - 变量内部的变量

时间:2009-06-18 15:57:30

标签: ruby-on-rails variables

好的。所以我有一个叫做联系人的表。在此表中,我有人和那里的联系信息以及他们的首选联系方式(电话,地址,电子邮件或传真)。我希望能够让ruby以我可以将粘贴复制到电子邮件地址栏等方式输出所述人员的列表。

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

这样可行,但它没有做我想做的事情,我没想到它。因此,对于首选的选项是电子邮件的人员列表,它将列表输出为。

迈克&lt;电子邮件&gt;,Joe&lt;电子邮件&gt;,John&lt;地址&gt;,Sarah&lt;电话&gt;

而不是

Mike <mike@yahoo.com>, Joe <joe@aol.com>, John <2014 Street>, Sarah <111-111-1111>

它正在调用preferred_method,但我真正希望它做的是......

<% @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 %>

但这也不起作用。

任何帮助都将不胜感激。

麦克

1 个答案:

答案 0 :(得分:2)

您可以使用send方法。

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

在接收对象上调用由符号或字符串标识的方法。

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

注意我在contact.preferred_method上设置了一个小写,因为我假设您的方法名称是'email'而不是'Email'