文字列のリンク化などはモデルでやるべきだ
いちいちメソッドで呼ぶのではなく、モデルでやったほうが
美しい場合もあります。
require 'uri' class Schedule < ActiveRecord::Base belongs_to :user belongs_to :group validates_presence_of :user_id validates_presence_of :scheduled_date validates_presence_of :summary validates_presence_of :body def url2link_of_body(options={}) target=options[:target] || '_blank' html_string= options[:noescape] ? body : CGI::escapeHTML(body) URI.extract(html_string).each{|url| html_string.gsub!(url,"<a href='#{url}' target='#{target}'>#{url}</a>") } html_string end end
などと定義すると、bodyカラムの内容のURLを自動的にリンクにしてくれる。
% ./script/runner 'p Schedule.find(1).url2link_of_body' "<a href='http://foo.bar' target='_blank'>http://foo.bar</a>\r\n<p>実験</p>"
エスケープをしたくない場合
% ./script/runner 'p Schedule.find(1).url2link_of_body(:noescape=>true)' "<a href='http://foo.bar' target='_blank'>http://foo.bar</a>\r\n<p>実験</p>"