在我的应用中,我存储了电子邮件。
我想在文本中动态解析这些电子邮件地址,并用链接替换它们(以便我们通过应用程序发送电子邮件)。
e.g。 @ email.body =“嗨,汤姆,请在jerry@cheese.com给我留言。”
我想要某种帮助器,将其动态转换为:
@ email.sanitized_body
“嗨,汤姆,请在#{link_to”电子邮件地址“给我发邮件,发送电子邮件至__电子邮件地址”(“jerry@cheese.com”)}。“
我一直在几个圈子里。 例如在模型中 课程电子邮件
def sanitized_body
text = self.body
emails = text.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)
emails.each do |email|
text.gsub!("jerry@cheese.com", helper.link_to("email", "http://www.google.com"))
end
text
end
我确信有一种合理的方法可以做到这一点,可能还有一个帮手,但是不能很好地解决这个问题......
module EmailsHelper
def sanitized_body(email_body)
text = email_body
emails = text.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)
emails.each do |email|
text.gsub!("jerry@cheese.com", "#{link_to("email", "http://www.google.com")}")
end
text
end
end
几乎到了我。但是显示时文本在字符串中显示为文本。
任何帮助都非常感激。
答案 0 :(得分:1)
您应该使用html_safe将文字呈现为HTML代码,而不是简单的字符串。
module EmailsHelper
def sanitized_body(email_body)
text = email_body
emails = text.scan(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)
replace_text = "You text %s" % helper.link_to("email", "http://www.google.com")
emails.each do |email|
text.gsub!("jerry@cheese.com", replace_text.html_safe)
end
text
end
end