2017-05-17 3 views
-1

J'utilise Nokogiri avec Rails 5. Comment sélectionner un élément "th" ou un élément "td" à partir d'une ligne de table? Mon but est d'obtenir tout le texte des cellules dans une rangée (s'il y a une solution plus générique, élégante, je suis tout dedans). Voici ce que j'aiComment puis-je sélectionner un th ou un td à partir d'une ligne de table?

 text_all_rows = all_rows.map do |row| 
     row_values = row.css('td | th').map{|str| str.text } 
            .map{|str| str.gsub(/[[:space:]]+/, ' ').gsub(/\A\p{Space}+|\p{Space}+\z/, '') }.join("\t") 
     [*row_values] 
     end 

Comme vous avez sans doute remarqué « td | e » n'est pas une syntaxe valide pour sélectionner les éléments « th » ou « td » de la ligne.

+0

S'il vous plaît lire "[mcve]". Lorsque vous posez une question comme celle-ci, nous devons vous fournir l'entrée minimale (HTML) qui illustre le problème. Sans cela, vous nous forcer à inventer l'intrant juste pour vous aider, ce qui nous fait perdre notre temps et introduit peut-être des hésitations dans nos réponses. Ne fais pas ça, au contraire, aide-nous à t'aider. –

Répondre

0

Utilisez un , (virgule) pour sélectionner plusieurs noeuds:

row_values = row.css('td, th').map{|str| str.text } 
+0

'map (&: text)' est plus concis. –