From: Akimichi Tatsukawa Date: 2003-03-17T20:32:25+09:00 Subject: [ruby-list:37340] セッション変数 CGI::Session の使用法 ruby-list の皆さん、こんにちは。 立川と申します。 CGI::Session について質問があります。 現在、Web上で簡単なクイズを行なうcgiを「eRuby テキスト埋め込み型Ruby」本 を参考にしながら作っています。 ユーザーがクイズに解答しているあいだ解答数を管理してそれを最後に表示させるために、 セッション変数を使いたいのです。 そこで以下のように書いてみました。 基本的には、index.rhtml でクイズに入り、answer_quiz.rhtml で解答をして、 show_quiz.rhtml で2回目以降のクイズに入り、これを終了するまで続けるという 流れになります。 ファイル: index.rhtml require 'cgi' require 'cgi/session' cgi = CGI::new ses = CGI::Session.new(cgi) ses['trial'] = "1" #解答数を保持します ...
ファイル: answer_quiz.rhtml require 'cgi' require 'cgi/session' cgi = CGI::new ses = CGI::Session.new(cgi) ...
>
ファイル: show_quiz.rhtml require 'cgi' require 'cgi/session' cgi = CGI::new ses = CGI::Session.new(cgi) ses['trial'] = "#{ses['trial'][0].to_i + 1}" # ここでエラーとなる。 ...
ところがこれを実行すると show_quiz.rhtml:14: undefined method `[]' for nil (NameError) とses['trial'][0]のところで怒られてしまいます。 新しいセッションを開いてはいけないのかと思い、show_quiz.rhtmlで ses = CGI::Session.new(cgi,{'new_session' => false}) とすると今度は /usr/lib/ruby/1.6/cgi/session.rb:38:in `initialize': session_key `_session_id' should be supplied (ArgumentError) と言われてしまいます。 そこで質問です。 ・どこか根本的な設計ミスがあるのでしょうか。 ・セッション変数はこうした場合に使うものではないのでしょうか。 CGIを自分で書くのはこれが初めてなので、基本的なところで 勘違いをしているかもしれません。 アドバイスのほど、よろしく御願いします。 -------------------------------------------------------- Name: 立川(森)察理 Akimichi Tatsukawa Email: akimichi@mbox.co.jp Web: http://akimichi.homeunix.net/~emile/ ============================================================