Я пытаюсь создать приложение rails, которое проверяет некоторые порты имени хоста, которое я предоставляю.Вот что у меня есть:
rout.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
Прямо сейчас, что у меня работает.Я могу ввести имя хоста в текстовое поле, проверить, какие порты я хочу протестировать, и вывести результаты на экран.
Однако я хотел бы сохранить самые последние введенные мной параметры.Прямо сейчас, после того, как я нажму кнопку «Тест», страница перезагрузится, поэтому она сбрасывает имя хоста по умолчанию и порт по умолчанию.Я хотел бы, чтобы он сохранил то же имя хоста и порт, что и раньше.Как мне это сделать?
Кроме того, я хотел бы, чтобы результаты были помещены в таблицу и отображены на той же веб-странице.Как бы я поступил так?