2012-01-24 20 views
2

Nokogiriを使用してフォームのselect要素を削り取ろうとしています。例えばフォームの選択オプションのテキストと値を取得するにはどうすればよいですか?

<select id="colors" name="colors"> 
    <option class="" value="1">Blue</option> 
    <option class="" value="2">Green</option> 
</select> 

私はなど1 => 'Blue'2 => 'Green'

たい私はat_cssxpathを使用してみましたが、まったく運がなかったです。

私は、これは正しい軌道になり推測:

doc.at_css("#colors option").each do |d| 
    puts d 
end 

ちょうど私に1を与える:

value 

私はXPathを使用してページ上のすべてのoptionテキストを取得することができます。

答えて

4
doc.css("#colors option").each do |d| 
  puts d.attr("value") 
    puts d.text 
end 

またはオブジェクトとして:

+0

doc.css("#colors option").each_with_object({}) do |e,o| o[e.attr("value")] = e.text end 
Aghhhh。私はat_cssを使用していました。 .cssだけがチケットだった。今私は愚かな気がする。ありがとうございます – Lee

+1

面白い機能スタイル: 'map = Hash [doc.css( '#colors options')。map {| o | [o ['value']、o.text]}] ' – Phrogz

関連する問題