Какой самый короткий способ генерировать случайный IP-адрес в Ruby?

Здесь так много ответов на этот вопрос, но кажется, что есть немного путаницы в том, что на самом деле происходит здесь.

Во-первых, ваша предпосылка

«href переопределяет ng-click в Angular.js»

blockquote>

неверен. На самом деле происходит то, что после щелчка событие щелчка сначала обрабатывается угловым (определяется директивой ng-click в угловых 1.x и click в угловом 2.x +), а затем продолжает размножаться (что в конечном итоге вызывает браузер, чтобы перейти к URL-адресу, определенному атрибутом href). (См. этот для получения дополнительной информации о распространении события в javascript)

Если вы хотите этого избежать, отмените распространение события с помощью . Метод preventDefault() интерфейса события :


(Это чистая функциональность javascript и не имеет ничего общего с угловым)

Теперь это уже решит вашу проблему, но это не оптимальное решение. Угловая, по праву, продвигает шаблон MVC . С помощью этого решения ваш шаблон html смешивается с логикой javascript. Вы должны стараться избегать этого как можно больше и поместить свою логику в свой угловой контроллер. Таким образом, лучший способ -


И в вашем методе logout ():

logout($event) {
   $event.preventDefault();
   ...
}

Теперь событие клика не дойдет до браузера, поэтому оно не будет пытаться загрузите ссылку, указанную href. (Однако обратите внимание, что если пользователь щелкнет правой кнопкой мыши по ссылке и сразу откроет ссылку, тогда вообще не будет события щелчка, а будет напрямую загружать URL, указанный атрибутом href.)

Относительно комментариев о посещенных цветах ссылок в браузерах. Опять же, это не имеет никакого отношения к угловому, если ваш href="..." указывает на посещаемый URL вашего браузера по умолчанию, цвет ссылок будет другим. Это контролируется CSS: посещенный Selector , вы можете изменить свой css, чтобы отменить это поведение:

a {
   color:pink;
}

PS1:

Некоторые ответы предлагают использовать :


href является угловой директивой. Когда ваш шаблон обрабатывается угловым, он будет преобразован в


. Эти два способа по существу одинаковы.

13
задан halfer 29 January 2019 в 22:40
поделиться

4 ответа

Вы можете использовать IPAddr

require 'ipaddr'
ipv4 = IPAddr.new(rand(2**32),Socket::AF_INET)
ipv6 = IPAddr.new(rand(2**128),Socket::AF_INET6)
26
ответ дан 1 December 2019 в 05:56
поделиться

Я использовал это раньше для генерации случайного ip, затем проверял его с помощью Resolv

  ip = "#{rand(99)}.#{rand(100)}.#{rand(10)}.#{rand(255)}"
  begin
    if ip
      host = Resolv.new.getname(ip) 
      puts "#{c} #{real_ip.length} #{ip} #{host}" 
    end
  rescue Exception => e
    puts "FAKE #{ip}"
  end
3
ответ дан 1 December 2019 в 05:56
поделиться

Если вам нужен действительно случайный IP-адрес, Array.new (4) {rand (256)}. Join ('.') делает это

19
ответ дан 1 December 2019 в 05:56
поделиться
ip = "%d.%d.%d.%d" % [rand(256), rand(256), rand(256), rand(256)]
3
ответ дан 1 December 2019 в 05:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: