概要
Railsで作成中のアプリの、Storyモデル内からコードを取ってきました。self.bodyにテキストが入っています。
コード
story.rb
def convert_links
URI.extract(body, %w{http https}).uniq.each do |uri|
unless uri.match(/(\.jpg|\.jpeg|\.png)/)
self.body.gsub!(uri, %Q{<a href="#{uri}">#{uri}</a>})
end
end
end
このメソッドでself.bodyを書きかえ、body内のテキストに記述されたURLはaリンクで囲まれたものになります。
解説
URIライブラリ( http://www.ruby-lang.org/ja/old-man/html/URI.html )を使ってURLである文字列、それもhttpかhttps形式のものを探し、それらを配列にしてまとめてから、uniqメソッドで重複をなくします。
配列におさめた各URL文字列に対し、gsub!でbodyを置換していきます。