Ruby/CGI/CGI Form

Материал из Wiki.crossplatform.ru

Перейти к: навигация, поиск

Содержание

Create a Page in HTML for Accepting the Customer Information

<HTML>
<Head>
<Title>Form Data</Title>
</Head>
<Body bgcolor=yellow>
<Pre>
<Center><H1><u>Form Data </u></H1></Center>
<b><Form name=" frm1" action=" cgi_action.rb">
Name         <input type=text name=" Name">
Age          <input type=text name=" Age">
Address      <input type=textarea name=" Address">
Sex          M <Input type=radio name=" Sex">    F <Input type=radio
name=" Sex">
E-mail address       <input type=text name=" E-mail">
             <Input type=" submit" Name=" Submit" value=" SUBMIT">
</b></Form></Pre>
</Body>
</HTML>
Create a CGI Script that Will Display the Form Values
#! /ruby/bin/ruby
require "cgi"
print "Content-type: text/html\r\n\r\n"
cgi=CGI.new
print "Name = "
print cgi[?Name"]
print "<br>"
print "<br>"
print "Age = "
print cgi[?Age"]
print "<br>"
print "<br>"
print "Address = "
print cgi[?Address"]
print "<br>"
print "<br>"
print "Sex = "
print cgi[?Sex"]
print "<br>"
print "<br>"
print "E-mail Address = "
print cgi[?E-mail"]



Get value from a form

<html> 
<head><title>Test Form</title></head> 
<body> 
I like Ruby because: 
<form target="cgibin/survey.rb"> 
<input type="checkbox" name="reason" value="flexible" /> 
It"s flexible<br /> 
<input type="checkbox" name="reason" value="transparent" /> 
It"s transparent<br /> 
<input type="checkbox" name="reason" value="perlish" /> 
It"s like Perl<br /> 
<input type="checkbox" name="reason" value="fun" /> 
It"s fun 
<p> 
Your name: <input type="text" name="name"> 
</p> 
<input type="submit"/> 
</form> 
</body> 
</html> 
 
# survey.rb
require "cgi" 
cgi = CGI.new 
cgi["name"] 
cgi["reason"]



Is name set in cgi

<html> 
<head><title>Test Form</title></head> 
<body> 
I like Ruby because: 
<form target="cgibin/survey.rb"> 
<input type="checkbox" name="reason" value="flexible" /> 
It"s flexible<br /> 
<input type="checkbox" name="reason" value="transparent" /> 
It"s transparent<br /> 
<input type="checkbox" name="reason" value="perlish" /> 
It"s like Perl<br /> 
<input type="checkbox" name="reason" value="fun" /> 
It"s fun 
<p> 
Your name: <input type="text" name="name"> 
</p> 
<input type="submit"/> 
</form> 
</body> 
</html> 
 
# survey.rb
require "cgi" 
cgi = CGI.new 
cgi.has_key?("name") # true 
cgi.has_key?("age") # false



Pass value from a form to CGI scropt

#!/usr/bin/ruby
require "cgi"
cgi = CGI.new
from = cgi["from"].to_i
to = cgi["to"].to_i
number = rand(to-from+1) + from
puts cgi.header
puts "<html><body>#{number}</body></html>"
An associated, but basic, form that could send the correct data would have HTML:
<form method="POST" action="http://www.example.ru/test.cgi">
   For a number between 
   <input type="text" name="from" value="" /> and
   <input type="text" name="to" value="" /> 
   <input type="submit" value="Click here!" />
</form>



Post a message

require "message"
def do_post_page(cgi)
  mstore = get_message_store
  user = get_session(cgi)["user"]
  num = cgi["id"][0]
  message = mstore.get_message(num.to_i)
  template = get_template
  template.gsub!(/%%HEADER%%/, header(cgi))
  template.gsub!(/%%USER%%/, user)
  cgi.out{ template }
end
def get_template
  "<HTML><BODY>
  %%HEADER%%
  <FORM ACTION=\"/cgi-bin/rb/board.cgi\" METHOD=\"GET\">
  <INPUT TYPE=HIDDEN NAME=cmd VALUE=savepost>
  <INPUT TYPE=HIDDEN NAME=SENDER VALUE=%%USER%%>
  <TABLE BORDER=0>
  <TR>
  <TD>Title:</TD><TD><INPUT TYPE=TEXT NAME=TITLE></TD>
  </TR>
  <TR>
  <TD>Message Body:</TD>
  <TD> <TEXTAREA rows=25 cols=80 NAME=BODY> </TEXTAREA></TD>
  <TR><TD><INPUT TYPE=SUBMIT NAME=SUBMIT></TD><TD></TD></TR>
  </TR>
  </TABLE>
  </FORM>
  </BODY></HTML>"
end