ユーザ用ツール

サイト用ツール


prog_cgi:セッション変数

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン両方とも次のリビジョン
prog_cgi:セッション変数 [2019/03/09 11:43] – [使い方] hirohitoprog_cgi:セッション変数 [2019/03/09 11:52] hirohito
行 136: 行 136:
 {{:prog_cgi:sess_commit.png?nolink|}}\\ {{:prog_cgi:sess_commit.png?nolink|}}\\
  
 +確認画面で「いいえ」を選択すると、最初の入力フォームに戻ります。その際、コントローラの action_cancel では、セッション変数から@formへ値を戻しているので、表示されるフォームには入力した値が最初から入っている状態になります。
  
 +ここで説明したセッション変数は、コントローラローカルセッション変数といい、個々のコントローラ内でのみ有効なセッション変数です。つまり異なるコントローラからはアクセスできませんので、他のコントローラと名前がぶつかることを心配する必要がありません。 
  
 +コントローラをまたいで値を受け渡すことができるグローバルセッション変数もあります。
 +詳しくは、[[alcgi:セッションマネージャ|AlSession セッションマネージャ]] の項を参照してください。
  
  
 +
 +====== リクエストをまたぐ一時的なメッセージ ======
 +
 +httpリクエストをまたぐ一時的なメッセージは意外とよく使うので、たとえばRailsではflashという専用の機能が実装されています。
 +
 +Aloneでは、そのような難しい機能は実装せず、もっと簡単に考えています。
 +
 +===== 方法 =====
 +
 +あるアクションにおいて処理後にリダイレクトし、リダイレクト先のページで処理の結果を表示する例。
 +
 +<code ruby>
 +  def action_one()
 +    session[:flash_msg1] = "リダイレクト先で表示"
 +    Alone::redirect_to( Alone::make_uri( :action=>"two" ) )
 +  end
 +  
 +  def action_two()
 +    AlTemplate.run( "two.rhtml" )
 +  end
 +</code>
 +
 +テンプレートでflash_msg1を表示し、同時に消去します。
 +
 +<code html>
 +  <p> <%=h session.delete(:flash_msg1) %> </p>
 +</code>
  
  
  
-コントローラローカルセッション変数は、個々のコントローラ内でのみ有効なセッション変数です。異なるコントローラからはアクセスできません。一つのアプリケーション内でグローバルにアクセスできるAlSessionによるセッション変数とは異なり、スコープがコントローラ内のみに限定されます。他のコントローラと名前がぶつかることを心配する必要がありません。  
prog_cgi/セッション変数.txt · 最終更新: 2019/03/09 11:54 by hirohito