¥È¥Ã¥× «Á°¤ÎÆüµ­(2007-01-31) ºÇ¿· ¼¡¤ÎÆüµ­(2007-02-11)» ÊÔ½¸

3 ÆüË·¼çÆüµ­


2007-02-09 [ĹǯÆüµ­]

_ [Rails] ¥³¥ó¥È¥í¡¼¥é¤´¤È¤Ë TransSid

¤½¤ì¤Ï default_url_options ¤ò»È¤¨¤Ð¤¤¤¤¤È»×¤¦¡£ ¤¦¤Á¤Î lib/trans_sid.rb ¤Ï¤³¤¦¤Ê¤Ã¤Æ¤Þ¤¹¡£

#
# Usage:
# class FooController
#   include TransSid
#
# Ruby's License
# moriq <moriq@moriq.com>
#
module TransSid
  def self.included(controller)
    controller.after_filter(:append_session_id_parameter)
  end

  protected
    def default_url_options(options)
      return unless request  # for test process
      session_key = request.session_options[:session_key] || '_session_id'
      { session_key => session.session_id }
    end

  private
    def append_session_id_parameter
      session_key = request.session_options[:session_key] || '_session_id'
      response.body.gsub!(%r{(</form>)}i, "<input type='hidden' name='#{CGI::escapeHTML session_key}' value='#{CGI::escapeHTML session.session_id}'>\\1")
    end
end

»²¹Í:

[]