Rack Middleware を使用して Cookie を設定し、同じ要求応答サイクルで有効な Cookie を使用して応答を送信しようとしています。
コンテキストは次のとおりです。私は、米国モードと英国モード (異なるロゴ、ナビゲーション バー、スタイルなど) の 2 つのモードを持つ Web サイトで作業しています。英国の訪問者が初めてそのページにアクセスしたときに、ブラウザに「英国モード」の Cookie を設定するだけでなく、ページの英国バージョンもレンダリングしたいと考えています。これまでの私のコードは次のとおりです。
# middleware/geo_filter_middleware.rb
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
response = Rack::Response.new(body, status, headers)
if from_uk?(env)
response.set_cookie('country', 'UK')
end
response.to_a
end
英国の訪問者が初めてページにアクセスすると、Cookie に「英国モード」が設定されますが、ページのデフォルトの米国バージョンが表示されます。Cookie が有効になり、英国の訪問者に英国モードが表示されるのは、2 番目の要求の後でのみです。
Cookie を同時に設定し、1 つの要求応答サイクルで有効な Cookie を使用して応答を返すというアイデアはありますか?