Ruby 使用 optgroups 从 select 列表中选择随机元素

Ruby pick random element from select list with optgroups

我目前正在尝试 select select 列表中的随机元素,我可以映射所有选项,然后随机选择一个,但问题是 te [=22= 中的 optgroup ] 或者,这里是 html 和我的代码的示例。 HML:

<select class="formDY-control" name="destino" id="destino">
<option value="0" style="background-color:#eeeeee">Selecciona Lugar de

 Recogida</option>
<optgroup value="0" label="Aeropuertos">
<option value="LUX01">Luxemburg Aeropuerto</option></optgroup>
<optgroup value="0" label="Todos los Destinos">
<option value="LUX01">Luxemburg Aeropuerto</option>
<option value="LUX02">Luxemburg City Ciudad</option>
</optgroup></select>

这是我的代码

ciudad = browser.select_list(id: 'destino').options.map(&:value)
ciudad.shift
city = ciudad.sample
browser.select_list(id: 'destino').select(city)

问题是 selected 选项(数组样本)的代码 returns 不在 select 列表中

由于您使用的是数组,并且 optgroup 的值为零,因此您可以这样做

browser
  .select_list(id: 'destino')
  .options
  .select{ |opt| opt.value != '0' }
  .map(&:value)

您可以随机选择一个选项元素,而不是随机选择一个选项值。然后你可以使用它的 select 方法来 select 该特定选项(而不是要求 select 列表再次找到该选项):

ciudad = browser.select_list(id: 'destino').options
ciudad.shift
city = ciudad.sample
city.select