Ruby 2.4.0 リファレンスマニュアル Python 3.6 で GET/POST メソッドを想定した CGI 用の簡易テンプレートを作成してみました と同様です。HTML 部分はヒアドキュメント作成し、GET でも POST でも動作します。
require "cgi" cgi = CGI.new puts "Content-Type: text/html; charset=utf-8" puts "Expires: Thu, 19 Nov 1981 08:52:00 GMT" puts "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" puts "Pragma: no-cache" puts params = cgi.params fld_names = {"氏名" => "field1", "フリガナ" => "field2"} fld_names.each { |key, value| if params[value].empty? then params[value] = "" end } out_client = <<HTML <html> <head> </head> <body> <form> <p>氏名 : <input type="text" name="#{fld_names["氏名"]}" value="#{params[fld_names["氏名"]][0]}"></p> <p>フリガナ : <input type="text" name="#{fld_names["フリガナ"]}" value="#{params[fld_names["フリガナ"]][0]}"></p> <p>送信 : <input type="submit" name="send" value="送信"></p> </form> </body> </html> HTML print out_client
Hash#each ※ ドキュメントの参照fld_names = {"氏名" => "field1", "フリガナ" => "field2"} fld_names.each { |key, value| 処理 }ハッシュのキーと値を引数としてブロックを評価します。 Array#empty? ※ ドキュメントの参照require "cgi" cgi = CGI.new params = cgi.params if params[value].empty? then params[value] = "" end同名の値がブラウザより送られて来る事を想定して、params[value] は配列になります。なので、普段は先頭の params[value][0] を使用する事になります。ですから本来ならば、params[value] = [""] ですが、後続の処理的にも結果的にも同じなので、単純に "" をセットしています 式展開 ※ ドキュメントの参照<input type="text" name="#{fld_names["氏名"]}" value="#{params[fld_names["氏名"]][0]}">"(ダブルクォート) で作成されたリテラルの中に #{} の形式で変数や文字列を返すメソッドを埋め込むんで、内容に置き換える事ができます。 AN HTTP Server の設定 テストにはまだまだ使える(重宝する) AN HTTP Server の正しい使用方法
|
【Ruby 2018の最新記事】
- Ruby(mechanize) で Seesaa のエクスポート
- さくらインターネットに Ruby をインストールして mechanize ( 先に nokogiri のインストールが必要でした )
- Ruby + MySQL + IFRAME + Bootstrap : 問い合せ WEB アプリテンプレート
- Ruby 2.4 で GET/POST メソッドを想定した CGI 用のテンプレート改良版( FORM で MySQL 参照と更新 )
- Ruby のエンコーディング( スクリプト・デフォルト・STDIN・STDOUT )
- Windows10 : Ruby で日本語メール送信
- Eclipse + Ruby : win32ole(COM使用の為) + MySQL Connector/ODBC でループ処理をしながら更新
- Pleiades Eclipse 4.7 Oxygen で Ruby を使って MySQL にアクセスする