我想在我的网页上混淆电子邮件地址。我希望在用户停用JS的情况下避免使用JS。
我找到了这个宝石:actionview-encoded_mail_to但它似乎并不适合我。它显示页面上的完整电子邮件地址(这很好),但它也在控制台中显示。
我尝试了3个相同结果的例子。宝石出现在我的Gemfile中,所以应该正确安装。
答案 0 :(得分:1)
你总是可以自己动手,但首先,那个宝石绝对有效。这就是我做的......
我将gem添加到Rails 4.2应用程序中:
# Gemfile
gem 'actionview-encoded_mail_to'
我安装了它:
$ bundle install
我进入了控制台:
$ rails console
我在控制台中提供了辅助方法:
include ActionView::Helpers::UrlHelper
使用与示例相同的参数调用mail_to
助手:
mail_to "me@domain.com", nil, replace_at: "_at_", replace_dot: "_dot_", class: "email"
......得到了这个结果:
"<a class=\"email\" href=\"mailto:me@domain.com\">me_at_domain_dot_com</a>"
"me_at_domain_dot_com"
看起来正确混淆了。你采取了什么措施?
混淆电子邮件字符串将是一个简单的字符串替换,我们可以使用sub
:
def obfuscate_email(email, replace_at: '_at_', replace_dot: '_dot_')
email.sub("@", replace_at).sub ".", replace_dot
end
我在控制台中对此进行了测试:
obfuscate_email "me@example.com"
# => "me_at_example_dot_com"
您可以将该方法放在application_helper.rb
中,并在任何视图中使用它:
link_to obfuscate_email(user.email), "mailto:#{user.email}"
# => "<a href=\"mailto:me@example.com\">me_at_example_dot_com</a>"
请注意,href必须是未经模糊处理的电子邮件才能正常工作。
mail_to
助手def obfuscated_mail_to(email, options = {})
link_to obfuscate_email(email), "mail_to:#{email}", options
end
在控制台中测试:
obfuscated_mail_to "me@example.com", class: "email"
=> "<a class=\"email\" href=\"mail_to:me@example.com\">me_at_example_dot_com</a>"
希望有所帮助!