質問: 現在ruby on railsを使ってマッチングサイトのようなものを作成しているのですが、周回bot等によるメールアドレスの回収を防ぐためにユーザページなどで表示されるメールアドレスをエンティティ化したいと考えています。 エンティティ化が、html上で文字を代替するものだということは分かるのですが、具体的にどのようなコードを書いたらエンティティ化の処理ができるのかがわかりません。 例えば、ユーザーのshowページに表示させるアドレスをエンティティ化したい場合、コントローラとviewはどのような処理をすれば良いのでしょうか? 当方初心者ですので、わかりやすく教えていただければ幸いです。 よろしくお願いいたします。
回答: エンティティー化というのは,文字を `a` みたいな文字参照に変える,ということですよね。 以下のようにすれば変換はできます。 ``` email = "foo@example.com" puts email.chars.map{|c| "%X;" % c.ord}.join #=> foo@example.com ``` `String#chars` は文字ごとにバラバラにした配列を返します。 `String#ord` は先頭文字の文字コードを返します。 `String#%` はレシーバーをフォーマット指定として,引数をそのフォーマットに従って文字列化します。 今の場合,`%X` が「16 進数(英字は大文字で)」というフォーマット指定子です。 ただ,文字参照化はおそらくまったく効果が無いでしょうね。 文字参照を文字に戻すのは上記の逆操作なので,1 行のコードでできちゃいます。