好的。所以我有一个叫做联系人的表。在此表中,我有人和那里的联系信息以及他们的首选联系方式(电话,地址,电子邮件或传真)。我希望能够让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 %>
但这也不起作用。
任何帮助都将不胜感激。
麦克
答案 0 :(得分:2)
您可以使用send方法。
<%=h contact.send(contact.preferred_method.downcase) %>
在接收对象上调用由符号或字符串标识的方法。
contact.send(:email)
contact.send('address')
注意我在contact.preferred_method上设置了一个小写,因为我假设您的方法名称是'email'而不是'Email'