トップ «前の日記(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

参考:

[]