2011-05-10 467 views
2

我想将一个带有电子邮件地址的字符串转换为ASCII字符,以便放置在HTML文档中。最简单的方法是什么?如何将电子邮件字符串转换为ASCII字符?

我不断收到阵列回我在我的模型中使用此代码字符的HTML文档中:

def ascii_email 
    self.email.each_byte do |e| 
    "&#", e, ";" 
    end 
end 
+0

这是一个有效的红宝石代码?我无法得到你的问题。 – sawa 2011-05-10 00:58:19

+0

这似乎是非常密切相关的这个其他问题:http://stackoverflow.com/questions/1600526/how-to-encode-decode-html-entities-in-ruby – buruzaemon 2011-05-10 00:59:15

回答

4

你迭代中的电子邮件地址的字符没有实际使用的时候,所以这不是将成为你想要的。

def ascii_email 
    self.email.bytes.collect do |e| 
     "&\##{e};" 
    end.join('') 
end 

有这么简单的通过元素进入一个迭代器和一个返回转换结果之间的一个重要而微妙的差别。你的代码片段中还缺少一些将转换后的数组转换回字符串的东西。

+0

那么'collect'做什么? – 2011-05-10 00:58:49

+0

它是[Enumerable](http://apidock.com/ruby/Enumerable)的一部分,并将每次迭代的结果“收集”到一个返回给您的新数组中。 – tadman 2011-05-10 01:00:06