Pregunta
lotofxpath = arrayofmanyxpaths.map{|s| "\"" + s + "\""}.join(",")
puts lotofxpath #=> "/html/body/a[1]", "/html/body/a[2]"
newb = doc.xpath(lotofxpath).to_a
esto no funcionará, y se quejan de xpath no válido.
sin embargo, copiando pegando la cadena de salida
newb = doc.xpath("/html/body/a[1]", "/html/body/a[2]").to_a
funcionará sin problemas!
¿Qué está pasando aquí?
Solución
En el primer caso, terminas llamando a Nokogiri de la siguiente manera
newb = doc.xpath("\"/html/body/a[1]\", \"/html/body/a[2]\"").to_a
y esta no es la sintaxis de Ruby correcta para lograr lo que estás tratando de hacer. El camino correcto es
newb = doc.xpath(*arrayofmanyxpaths).to_a
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow