ページキャッシュで画像をキャッシュ
こういう方法もあるけど・・・
ActionController::Caching::Pages#cache_page(caches_pageでafter_filgerに登録されるメソッド)を使えばurl_forで工夫したりする必要ないよ。
(Rails 2.1.0でのみ確認)
require 'qrcoder' class CodeController < ApplicationController # サイズ MAX_LENGTH = 7089 def index data = params[:data].join('/') size = (params[:size] || 96).to_i raise "データが大きすぎる" if data.size > MAX_LENGTH raise "sizeが大きすぎる" if size > 256 # 仮にQRコードをつくって、GD::Imageオブジェクトで返したとする qrcode = Qrcoder.encode(data, 'png', '', :width => size) # データを表示 send_data img.pngStr, :type => "image/png", :disposition => 'inline' # 第2引数で指定したパスでページキャッシュの作成 # なお、第1引数はキャッシュしたいデータを渡す。nullならresponse.body。 cache_page nil, url_for(:only_path => true, :skip_relative_url_root => true, :format => 'png') end end