0
我試圖做一個軌道應用程序,測試我提供的一個主機名的一些端口。這是我到目前爲止有:如何在rails中顯示這些信息?
的routes.rb:
Diagnostics::Application.routes.draw do
match 'port_testing/test', :controller => :port_testing, :action=> :test
end
index.html.haml:
= stylesheet_link_tag 'user'
.spacey
%h1 Port Testing
= form_tag('port_testing/test', method: 'get') do
= text_field_tag :hostname, 'localhost', size: 50
- @models.each do |key,value|
%input{:type=>"checkbox", :name=>"#{key}", :value=>1, :checked=>value}
=key
%input{:type => :submit, :value => "Test"}
port_testing_controller.rb:
require 'socket'
class PortTestingController < ApplicationController
def index
@models = {"80" => false, "443" => false, "2195" => true, "28009" => false}
end
def test
puts "\n"
hostname = params["hostname"]
puts hostname
ports = ["80", "443", "2195", "28009"]
ports.each do |key|
#puts key
if params.has_key?(key)
port = key.to_i
is_port_open?(hostname, port)
end
end
redirect_to("#/port_testing")
end
def is_port_open?(ip, port)
begin
Timeout::timeout(1) do
begin
s = TCPSocket.new(ip, port)
puts "Successful"
s.close
return true
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
puts "Error"
return false
end
end
rescue Timeout::Error
puts "Timeout"
end
return false
end
end
眼下,我有什麼作品。我可以在文本字段中輸入主機名,檢查我想要測試的端口,並將結果打印到屏幕上。
但是,我想要做的是能夠保存我輸入的最新參數。現在,單擊測試後,頁面將重新加載,以便重置爲默認主機名和默認端口。我希望它保持與以前一樣的主機名和端口。我將如何做到這一點?
此外,我希望將結果放在表格中並顯示在同一網頁上。我會如何去做這件事?
我真的不明白「保存會話參數」的含義。你能解釋一下嗎?或者鏈接到一些例子?謝謝。 – 2012-03-09 14:27:42
會話應該在您的控制器中可用。這是一個散列,因此您可以像讀取其他散列一樣讀寫數據。在你的控制器動作中,你可以像這樣'session [:hostname] = params [:hostname]''保存主機名。你可以通過訪問'session [:hostname]'來取回。會話通過頁面刷新存在,所以當您渲染視圖時,您可以從會話中提取以前使用的值並填充輸入。 – JohnColvin 2012-03-09 14:40:54