ユーザ用ツール

サイト用ツール


prog_cgi:入力フォームを使う

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
次のリビジョン両方とも次のリビジョン
prog_cgi:入力フォームを使う [2019/03/03 19:46] hirohitoprog_cgi:入力フォームを使う [2019/03/06 19:24] hirohito
行 7: 行 7:
 ここでは、テキストと数字の入力ができるフォームを表示し、入力結果を表示するだけのアプリケーションを作成してみます。 ここでは、テキストと数字の入力ができるフォームを表示し、入力結果を表示するだけのアプリケーションを作成してみます。
  
-{{:prog_cgi:ss_form1.png?nolink&400|}}+{{:prog_cgi:form_form1.png?nolink&400|}}
  
  
行 113: 行 113:
 </code> </code>
  
-{{:prog_cgi:ss_form1.png?nolink|}}+{{:prog_cgi:form_form1.png?nolink|}}
  
  
行 138: 行 138:
 このプログラムでは、フォームに入力され送信されてきたデータを画面にそのまま表示するだけです。 このプログラムでは、フォームに入力され送信されてきたデータを画面にそのまま表示するだけです。
    
-{{:prog_cgi:ss_confirm1.png?nolink|}}+{{:prog_cgi:form_confirm1.png?nolink|}}
  
  
行 146: 行 146:
   <%= @form.make_tiny_sheet() %>   <%= @form.make_tiny_sheet() %>
  
-{{:prog_cgi:ss_confirm2.png?nolink|}}+{{:prog_cgi:form_confirm2.png?nolink|}}
  
  
行 189: 行 189:
 </code> </code>
  
-{{:prog_cgi:ss_form2.png?nolink|}}+{{:prog_cgi:form_form2.png?nolink|}}
  
  
-===== POSTメソッドとGETメソッド =====+===== POSTとGET ===== 
 + 
 +フォームで使われるメソッドには POSTとGETがあり、デフォルトでPOSTメソッドが使われます。 
 + 
 +  <form method="POST" action="..."> 
 + 
 +通常のデータ登録などの場合はPOSTが適切ですが、検索するためのフォームなど、入力値がコンテンツの変更を伴わない場合には、GETメソッドを使う方が良い場合があります。 
 + 
 +GETが使われる場合、 action="index.rb?ctrl=XXXX&action=YYYY" と記述していても、URLパラメータ(?以降)が消されてしまい、フォーム入力データで上書きされるため、結果としてルーティング用パラメータ ctrl, action がAloneへ渡らず、正常に動作できません。 
 +(これは、ブラウザがそのように動作しているということですが、HTMLの仕様かどうかまでは調査しきれていません。) 
 + 
 +そのため、フォームでGETを使う場合、ひと工夫必要になります。 
 + 
 + 
 +==== 独自のテンプレート(フォーム)を使う場合 ==== 
 + 
 +テンプレート中に以下の例を参考に hiddenで ctrlとactionを追加します。 
 + 
 +<code html> 
 +<form name="form1" method="GET" action="<%=h make_uri() %>"> 
 +  <input type="hidden" name="ctrl" value="<%=h Alone.ctrl %>"> 
 +  <input type="hidden" name="action" value="ANY_ACTION"> 
 +</code> 
 + 
 + 
 +==== フォームの自動生成を使う場合 ==== 
 + 
 +use_get_method() メソッドを使いGETを使うことを指示すると、フォームオブジェクトにウィジェット ctrlとaction が追加されます。 
 + 
 +<code ruby> 
 +@form = AlForm.new( ... ) 
 +@form.use_get_method( :action=>"ANY_ACTION"
 +</code> 
 + 
 +もしくは、自動生成しなくても、use_get_methodをウィジェット追加のためだけに使うことも考えられます。 
 + 
 +<code ruby> 
 +@form = AlForm.new( ... ) 
 +@form.use_get_method( :action=>"ANY_ACTION"
 +</code> 
 + 
 + 
 +<code html> 
 +<form name="form1" method="GET" action="<%=h make_uri() %>"> 
 +  <%@form.make_tag(:ctrl) %> 
 +  <%@form.make_tag(:action) %> 
 +</code>
  
  
  
  
prog_cgi/入力フォームを使う.txt · 最終更新: 2019/03/15 17:36 by hirohito