Как мне показать эту информацию в рельсах? - PullRequest
0 голосов
/ 08 марта 2012

Я пытаюсь создать приложение 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

Прямо сейчас, что у меня работает.Я могу ввести имя хоста в текстовое поле, проверить, какие порты я хочу протестировать, и вывести результаты на экран.

Однако я хотел бы сохранить самые последние введенные мной параметры.Прямо сейчас, после того, как я нажму кнопку «Тест», страница перезагрузится, поэтому она сбрасывает имя хоста по умолчанию и порт по умолчанию.Я хотел бы, чтобы он сохранил то же имя хоста и порт, что и раньше.Как мне это сделать?

Кроме того, я хотел бы, чтобы результаты были помещены в таблицу и отображены на той же веб-странице.Как бы я поступил так?

1 Ответ

0 голосов
/ 09 марта 2012

Контроллеры никогда не должны печатать на экран. Для вывода информации вам необходимо создать файл вида. Для действия тестового контроллера файл представления будет app / views / port_testing / test.html.haml. Поставь там свой стол. Вам нужно будет создать некоторые переменные экземпляра в вашем контроллере, они будут доступны для использования в вашем представлении.

Для замены формы на хост и порты, я предлагаю в действии контроллера сохранить параметры в сеансе. Затем используйте переменные сеанса, чтобы установить значения ваших входных данных HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...