📅  最后修改于: 2023-12-03 15:04:56.895000             🧑  作者: Mango
CGI (Common Gateway Interface) 是一种用于 Web 服务器和其他程序"对话"的标准接口。在 Ruby 中,我们可以通过使用标准库中的 cgi
模块轻松地使用 CGI 编程。
以下是一个简单的 CGI 脚本示例:
#!/usr/bin/env ruby
require "cgi"
cgi = CGI.new("html4")
cgi.out do
cgi.html do
cgi.head do
cgi.title { "Hello, World!" }
end +
cgi.body do
cgi.h1 { "Hello, World!" } +
cgi.p { "This is a simple CGI program written in Ruby." }
end
end
end
这个脚本将生成一个包含标题和一些文本的 HTML 页面。
我们首先使用 require 引入了 cgi
模块,然后创建了一个 CGI
对象。我们将参数 "html4" 传递给 CGI.new
,表示我们要生成 HTML 4.0 标准的文档类型声明。
接下来,我们使用 CGI.out
方法来生成输出。这个方法接受一个块,并将代码片段插入到 HTML 页面的正文中。
在块中,我们首先使用 cgi.html
方法生成了一个 HTML 根元素。然后,我们使用 cgi.head
方法来生成头部元素,并在其中创建了一个标题。最后,我们使用 cgi.body
方法来生成正文元素,并在其中创建了一个标题和一个段落。
在这个示例中,我们使用了 Ruby 中的代码块来生成 HTML 片段。这个技术称为“嵌套程式码(embedded code)”,它使我们可以在 Ruby 代码中嵌入 HTML 片段,并将它们合并成一个单一的输出。
CGI 编程的一个常见用例是从 Web 表单中接收用户输入。在 Ruby 中,我们可以使用 CGI
对象的 params
属性来访问表单数据。
以下是一个示例脚本,它从用户输入中接收一个名字,并将其展示在屏幕上:
#!/usr/bin/env ruby
require "cgi"
cgi = CGI.new
name = cgi.params["name"].first
cgi.out do
cgi.html do
cgi.head do
cgi.title { "Hello, #{name}!" }
end +
cgi.body do
cgi.h1 { "Hello, #{name}!" } +
cgi.p { "Welcome to our website." }
end
end
end
在这个脚本中,我们首先创建了一个 CGI
对象。然后,我们使用 cgi.params
属性获取了名为 "name" 的参数的值。由于 params
返回一个数组,我们需要使用 first
方法来访问数组中的第一个元素。
接下来,我们生成了一个包含用户输入的标题的 HTML 页面。
最后,我们来看一个生成动态内容的示例 CGI 脚本。在这个脚本中,我们首先定义了一个简单的计算函数,它接受两个参数并返回它们的和。
然后,我们使用 CGI
对象的 params
属性从 Web 表单中获取这两个参数。我们将它们转换为整数,并传递给计算函数。
最后,我们生成一个包含结果的 HTML 页面。
#!/usr/bin/env ruby
require "cgi"
def calculate_sum(a, b)
a.to_i + b.to_i
end
cgi = CGI.new
a = cgi.params["a"].first
b = cgi.params["b"].first
sum = calculate_sum(a, b)
cgi.out do
cgi.html do
cgi.head do
cgi.title { "Sum Calculator" }
end +
cgi.body do
cgi.h1 { "Sum Calculator" } +
cgi.form("method" => "post") do
cgi.p { "Enter two numbers:" } +
cgi.input("type" => "text", "name" => "a", "value" => a) +
cgi.input("type" => "text", "name" => "b", "value" => b) +
cgi.input("type" => "submit", "value" => "Calculate") +
end +
cgi.p { "The sum of #{a} and #{b} is #{sum}." }
end
end
end
在这个脚本中,我们首先定义了一个名为 calculate_sum
的计算函数,它接受两个参数并返回它们的和。
然后,我们使用 CGI
对象的 params
属性获取名为 "a" 和 "b" 的参数,并将它们转换为整数。我们将它们传递给计算函数,并保存结果。
接下来,我们生成一个包含 Web 表单的 HTML 页面,并在其中包含两个输入字段和一个提交按钮。当用户点击按钮时,表单将被提交,并计算函数将使用输入值重新计算总和。我们将结果显示在页面中。
在 Ruby 中,使用 CGI 编程可以轻松地创建动态 Web 应用程序。在我们的代码示例中,我们演示了如何创建一个简单的 CGI 脚本、传递参数以及生成动态内容。使用这些技巧,你可以开始编写自己的 Ruby CGI 程序并扩展它们的功能。