mechanize:Mechanize::Form#fields_with, #fields
以下のような HTML で
<html> <head> <title>form test</title> </head> <body> <form method="get" action="cgi/foo00.cgi" name="form1"> <input type="text" name="text1" /> <input type="hidden" name="hidden1" /> <textarea name="textarea1" rows="4" cols="40">foo</textarea> </form> </body> </html>
>> require 'mechanize' => true >> agent = Mechanize.new => #<Mechanize:0xb747f538 ... >> page = agent.get('http://127.0.0.1:8080/test10_form.html') => #<Mechanize::Page {url #<URI::HTTP:0xb747bc80 URL:http://127.0.0.1:8080/test10_form.html>} {meta} {title "form test"} {iframes} {frames} {links} {forms #<Mechanize::Form {name "form1"} {method "GET"} {action "cgi/foo00.cgi"} {fields #<Mechanize::Form::Text:0xb74730d0 @name="text1", @node= #(Element:0x..fdba3993a { name = "input", attributes = [ #(Attr:0x..fdba37f40 { name = "type", value = "text" }), #(Attr:0x..fdba37f36 { name = "name", value = "text1" })] }), @value=""> #<Mechanize::Form::Hidden:0xb7472f04 @name="hidden1", @node= #(Element:0x..fdba398ea { name = "input", attributes = [ #(Attr:0x..fdba36a5a { name = "type", value = "hidden" }), #(Attr:0x..fdba36a50 { name = "name", value = "hidden1" })] }), @value=""> #<Mechanize::Form::Field:0xb7472798 @name="textarea1", @node= #(Element:0x..fdba39408 { name = "textarea", attributes = [ #(Attr:0x..fdba355a6 { name = "name", value = "textarea1" }), #(Attr:0x..fdba3559c { name = "rows", value = "4" }), #(Attr:0x..fdba35592 { name = "cols", value = "40" })], children = [ #(Text "foo")] }), @value="foo">} {radiobuttons} {checkboxes} {file_uploads} {buttons}>}> >> f = page.form('form1') => #<Mechanize::Form {name "form1"} {method "GET"} {action "cgi/foo00.cgi"} {fields #<Mechanize::Form::Text:0xb74730d0 @name="text1", @node= #(Element:0x..fdba3993a { name = "input", attributes = [ #(Attr:0x..fdba37f40 { name = "type", value = "text" }), #(Attr:0x..fdba37f36 { name = "name", value = "text1" })] }), @value=""> #<Mechanize::Form::Hidden:0xb7472f04 @name="hidden1", @node= #(Element:0x..fdba398ea { name = "input", attributes = [ #(Attr:0x..fdba36a5a { name = "type", value = "hidden" }), #(Attr:0x..fdba36a50 { name = "name", value = "hidden1" })] }), @value=""> #<Mechanize::Form::Field:0xb7472798 @name="textarea1", @node= #(Element:0x..fdba39408 { name = "textarea", attributes = [ #(Attr:0x..fdba355a6 { name = "name", value = "textarea1" }), #(Attr:0x..fdba3559c { name = "rows", value = "4" }), #(Attr:0x..fdba35592 { name = "cols", value = "40" })], children = [ #(Text "foo")] }), @value="foo">} {radiobuttons} {checkboxes} {file_uploads} {buttons}> >> f.fields_with => [#<Mechanize::Form::Text:0xb74730d0 @name="text1", @value="", @node=#<Nokogiri::XML::Element:0x..fdba3993a name="input" attributes=[#<Nokogiri::XML::Attr:0x..fdba37f40 name="type" value="text">, #<Nokogiri::XML::Attr:0x..fdba37f36 name="name" value="text1">]>>, #<Mechanize::Form::Hidden:0xb7472f04 @name="hidden1", @value="", @node=#<Nokogiri::XML::Element:0x..fdba398ea name="input" attributes=[#<Nokogiri::XML::Attr:0x..fdba36a5a name="type" value="hidden">, #<Nokogiri::XML::Attr:0x..fdba36a50 name="name" value="hidden1">]>>, #<Mechanize::Form::Field:0xb7472798 @name="textarea1", @value="foo", @node=#<Nokogiri::XML::Element:0x..fdba39408 name="textarea" attributes=[#<Nokogiri::XML::Attr:0x..fdba355a6 name="name" value="textarea1">, #<Nokogiri::XML::Attr:0x..fdba3559c name="rows" value="4">, #<Nokogiri::XML::Attr:0x..fdba35592 name="cols" value="40">] children=[#<Nokogiri::XML::Text:0x..fdba343f4 "foo">]>>] >> f.fields_with.size => 3 >> f.fields => [#<Mechanize::Form::Text:0xb74730d0 @name="text1", @value="", @node=#<Nokogiri::XML::Element:0x..fdba3993a name="input" attributes=[#<Nokogiri::XML::Attr:0x..fdba37f40 name="type" value="text">, #<Nokogiri::XML::Attr:0x..fdba37f36 name="name" value="text1">]>>, #<Mechanize::Form::Hidden:0xb7472f04 @name="hidden1", @value="", @node=#<Nokogiri::XML::Element:0x..fdba398ea name="input" attributes=[#<Nokogiri::XML::Attr:0x..fdba36a5a name="type" value="hidden">, #<Nokogiri::XML::Attr:0x..fdba36a50 name="name" value="hidden1">]>>, #<Mechanize::Form::Field:0xb7472798 @name="textarea1", @value="foo", @node=#<Nokogiri::XML::Element:0x..fdba39408 name="textarea" attributes=[#<Nokogiri::XML::Attr:0x..fdba355a6 name="name" value="textarea1">, #<Nokogiri::XML::Attr:0x..fdba3559c name="rows" value="4">, #<Nokogiri::XML::Attr:0x..fdba35592 name="cols" value="40">] children=[#<Nokogiri::XML::Text:0x..fdba343f4 "foo">]>>] >> f.fields.size => 3
複数形の _with の場合は、「attr_reader :fields, :buttons, :file_uploads, :radiobuttons, :checkboxes」があるので _with の alias ではないらしい〜(なので引数は取れないはず)