Ruby和web開發

來源:互聯網
上載者:User

1。編寫cgi

    簡單的cgi程式如下:

  #!/usr/bin/env ruby
  print "HTTP/1.0 200 OKrn"
  print "Content-type: text/htmlrnrn"
  print "Hello World!rn"

    我們可以用ruby來處理提交的參數,填充模板,產生html等,但稍顯麻煩,可以用cgi模組。

2。使用cgi.rb

  cgi.rb用來編寫cgi指令碼,他可以操作form,cookies,環境變數,維護session等。具體用法你應該知道去哪裡找吧。

3。引用和轉義

   /在url裡是一個特殊字元,還有< 和>等,有時候需要轉義(escaped),例如/被轉成%2F。cgi.rb提供了兩個函數,CGI.escape 和CGI.unescape:

    require 'cgi'
    puts CGI.escape( "Nicholas Payton/Trumpet & Flugel Horn" )

產生結果:

    Nicholas+Payton%2FTrumpet+%26+Flugel+Horn

    轉義html文檔中元素的例子(略):

4。表單 form

    類cgi可以用兩種方法取得用戶端提交的資料。加入使用者提交了lookup?player=tom&year=1958,我們可以直接用cgi[]數組訪問它。

  require 'cgi'
  cgi = CGI.new
  cgi['player']  # -> ["tom"]
  cgi['year']    # -> ["1958"]

另一個辦法是你用一個hash表,取得所有參數及值。

  require 'cgi'
  cgi = CGI.new
  h = cgi.params
  h['player']    # -> ["tom"]

5。產生form和html

cgi類提供了非常多的用來產生html的方法,幾乎是每一個tag一個方法。還是例子來得直觀:

require "cgi"
  cgi = CGI.new("html3")  # add HTML generation methods
  cgi.out{
    cgi.html{
      cgi.head{ "n"+cgi.title{"This Is a Test"} } +
      cgi.body{ "n"+
        cgi.form{"n"+
          cgi.hr +
          cgi.h1 { "A Form: " } + "n"+
          cgi.textarea("get_text") +"n"+
          cgi.br +
          cgi.submit
        }
      }
    }
  }

產生如下代碼:

6。cookies

  require "cgi"
  cookie = CGI::Cookie.new("rubyweb", "CustID=123", "Part=ABC");
  cgi = CGI.new("html3")
  cgi.out( "cookie" => [cookie] ){
    cgi.html{
      "nHTML content here"
    }
  }

產生的頭如下:

Content-Type: text/html
Content-Length: 86
Set-Cookie: rubyweb=CustID%3D123&Part%3DABC; path=

然後,當使用者再訪問頁面的時候,你就可以讀取這個值了。

require "cgi"
  cgi = CGI.new("html3")
  cgi.out{
    cgi.html{
      cgi.pre{
        cookie = cgi.cookies["rubyweb"]
          "nCookies aren" + cookie.value.join("n")
      }
    }

7。sessions

處理session需要額外多一個類:CGI::Session

require "cgi"
  require "cgi/session"

  cgi = CGI.new("html3")
  sess = CGI::Session.new( cgi, "session_key" => "rubyweb",
                            "session_id"  => "9650",
                            "new_session" => true,
                            "prefix" => "web-session.")
  sess["CustID"] = 123
  sess["Part"] = "ABC"

  cgi.out{
    cgi.html{
      "nHTML content here"
    }
  }

讀取session通過如下代碼:

  require "cgi"
  require "cgi/session"

  cgi = CGI.new("html3")
  sess = CGI::Session.new( cgi, "session_key" => "rubyweb",
                                 "prefix" => "web-session.")
  cgi.out{
    cgi.html{
      "nCustomer #{sess['CustID']} orders an #{sess['Part']}"
    }
  }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.