Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用ruby从HTML文本框接收返回?_Ruby - Fatal编程技术网

如何使用ruby从HTML文本框接收返回?

如何使用ruby从HTML文本框接收返回?,ruby,Ruby,我正在用Ruby创建一个聊天客户端/服务器系统 我的服务器将托管在笔记本电脑或其他东西上(这是一个类项目,因此不需要太多的处理能力),然后我计划让客户端在web浏览器中运行 我将为它提供两个文本框的HTML:一个用户可以在其中键入,另一个显示聊天历史 我的问题是,虽然我可以轻松地将HTML代码输入浏览器并让它显示聊天(导航到ip地址:端口),但我不知道如何将文本框中输入的内容返回到服务器 有人知道我怎么做吗?我建议使用一个轻量级的框架来处理这个问题。它非常简单,无需大量阅读即可快速完成任务,但功

我正在用Ruby创建一个聊天客户端/服务器系统

我的服务器将托管在笔记本电脑或其他东西上(这是一个类项目,因此不需要太多的处理能力),然后我计划让客户端在web浏览器中运行

我将为它提供两个文本框的HTML:一个用户可以在其中键入,另一个显示聊天历史

我的问题是,虽然我可以轻松地将HTML代码输入浏览器并让它显示聊天(导航到ip地址:端口),但我不知道如何将文本框中输入的内容返回到服务器


有人知道我怎么做吗?

我建议使用一个轻量级的框架来处理这个问题。它非常简单,无需大量阅读即可快速完成任务,但功能强大,可以显著扩展聊天应用程序

使用基于web的客户端的缺点是,只有在客户端向服务器询问最新信息后,才会刷新客户端上的聊天日志;即,在每次页面刷新时,而不是实时刷新


您可以使用一些灵活的Javascript(大部分)来解决这个问题,定期请求新内容,比如在键入自己的答案时,Stack Overflow如何显示新答案发布的情况。

听起来您需要了解CGIs如何工作的基本知识。一旦您知道,您将发现使用@echoback推荐的Sinatra、Padrino、Rails或其他语言更容易

这是一个非常基本的CGI。它生成一个简单的表单,与您刚才讨论的内容相同,然后遍历web服务器传递给Ruby的环境表,按键排序,并按排序顺序输出一个表。大多数字段直接应用于web服务器本身或CGI,如浏览器发送的查询,以及发送到服务器的标题,说明其功能:

#!/usr/bin/env ruby

puts "Content-Type: text/html"
puts 
puts "<html><head><style type='text/css'>body{font-family: monospace;}</style></head><body>"

puts "<form name='foo' action='test_cgi.rb'>"
puts "<input type='textinput' name='inputbox'></input><br />"
puts "<textarea name='textareabox'></textarea><br />"
puts "<input type='submit'></input>"
puts "</form>"

puts "<h4>ENVIRONMENT:</h4>"
puts "<table>"
ENV.keys.sort.each do |k|
  puts "<tr><td>#{k}</td><td>#{ENV[k]}</td></tr>"
end
puts "</table>"

puts "</body></html>"
#/usr/bin/env ruby
放置“内容类型:文本/html”
放
放置“正文{font-family:monospace;}”
放置“”
放入“
” 放入“
” 放置“” 放置“” 放置“环境”: 放置“” ENV.keys.sort.each do|k| 放置“{k}{ENV[k]}” 结束 放置“” 放置“”
复制该代码,将其存储到名为
test\u cgi.rb
的Ruby文件中,然后在该文件上设置可执行位。将该文件移动到计算机上web服务器的
cgi-bin
目录中。使用浏览器访问文件(
http://localhost:8080/cgi-bin/test_cgi.rb
或类似内容),并在表单中输入不同值并提交时观察表中的输出变化

一旦您了解了从服务器到浏览器再到服务器的往返过程,您将有机会了解Sinatra如何构建在机架上,以提供比使用CGI更简单的更多功能