¥³¥ó¥È¥í¡¼¥ë̾ | HTML | õ¤¹¥á¥½¥Ã¥É |
1¹ÔÆþÎÏÍó | <input type="text"> | #field_with |
Ê£¿ô¹ÔÆþÎÏÍó | <textarea> | #field_with |
¥Ñ¥¹¥ï¡¼¥É | <input type="password"> | #field_with |
±£¤·¥³¥ó¥È¥í¡¼¥ë | <input type="hidden"> | #field_with |
¥é¥¸¥ª¥Ü¥¿¥ó | <input type="radio"> | #radiobutton_with |
¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹ | <input type="checkbox"> | #checkbox_with |
ÁªÂò¥á¥Ë¥å¡¼ | <select> | #field_with |
Á÷¿®¥Ü¥¿¥ó | <input type="submit"> | #button_with |
¥ê¥»¥Ã¥È¥Ü¥¿¥ó | <input type="reset"> | #button_with |
¥¤¥á¡¼¥¸¥Ü¥¿¥ó | <input type="image"> | #button_with |
ÈÆÍѥܥ¿¥ó | <button> | #button_with |
¥Õ¥¡¥¤¥ëÁ÷¿® | <input type="file"> | #file_upload_with |
<form name="f1" action="/search"> <input type="text" name="q"> <input type="submit" value="Á÷¿®"> </form>¤È¤¤¤¦ HTML ÊÒ¤Çɽ¤µ¤ì¤ëÆþÎÏÍó¤Ëʸ»úÎó "Ruby" ¤òÆþÎϤ·¡¢¥Õ¥©¡¼¥à¤Î¡Ê1¤Ä¤·¤«¤Ê¤¤¡ËÁ÷¿®¥Ü¥¿¥ó¤ò²¡¤¹¤Ë¤Ï
# name ¤¬ f1 ¤Ê <form> ¤òõ¤¹ agent.page.form_with(:name => 'f1'){|form| # name ¤¬ q ¤ÊÆþÎÏÍó¤òõ¤¹ form.field_with(:name => 'q'){|field| field.value = 'Ruby' } # ¥Õ¥©¡¼¥à¤Ë submit ¥Ü¥¿¥ó¤¬¤¢¤ì¤Ð¡Ö²¡¡×¤·¤ÆÁ÷¿® form.click_button }¤È¤·¤Þ¤¹¡£
require 'rubygems'; require 'mechanize' agent = Mechanize.new{|a| a.user_agent_alias = 'Windows IE 7'} # meta ¤¬ charset=Shift_JIS ¤Ç¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸¤ÎÎã agent.get('http://www.google.com/webhp?hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS') p agent.page.encoding agent.page.form_with(:name => 'f'){|form| # ¡Ö¤Ï¤·¤´¤À¤«¡×üⶶ¤ò¸¡º÷ form.field_with(:name => 'q').value = 'üⶶ' # ¸¡º÷·ë²Ì¤Î¥Ú¡¼¥¸¡Ê¤Ï¤·¤´¤À¤«´Þ¤à¡Ë¤òÀµ¤·¤¤Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇºÆ¥Ñ¡¼¥¹¡Êº£²ó̵´Ø·¸¡Ë }.click_button.encoding = 'CP932' puts agent.page.title·ë²Ì¡ÊUTF-8¤Î¤Ï¤·¤´¤À¤«¤Ïiconv¤Î¹Í¤¨¤ëÁǤÎShift_JIS¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¤Î¤ÇÊÑ´¹¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¥¨¥é¡¼¡Ë¡§
"Shift_JIS" Iconv::IllegalSequence: "\351\253\231\346\251\213" from $GEMLIB/mechanize-1.0.0/lib/mechanize/util.rb:34:in `iconv'ÊÑ´¹²Äǽ¤Ç¤¢¤ë¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°Ì¾¤ò #page ¥ª¥Ö¥¸¥§¥¯¥È¤Î Mechanize::Page#encoding= ¤Ç»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡ÊÁ÷¿®»þ¤ÎÊÑ´¹¤ËɬÍ×¤Ê¤Î¤Ï #page ¥á¥½¥Ã¥É¤ÎÊÖ¤¹ Page ¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¾ðÊó¤Ç¤¹¡Ë¡£¤è¤¯¤¢¤ëÎã¤È¤·¤Æ¡¢Windows ¤Ç»È¤ï¤ì¤ë Shift_JIS ¤ÇÁ÷¿®¤·¤¿¤¤¾ì¹ç¡¢³Èĥʸ»ú¤¬´Þ¤Þ¤ì¤ë¤Ê¤é CP932¡ÊÆüËܸì¥Ñ¥Ã¥ÁºÑ¤ß iconv ¤Ê¤é Windows-31J ¤â²Ä¡Ë¤Ë¤Ê¤ê¤Þ¤¹¡£
require 'rubygems'; require 'mechanize' agent = Mechanize.new{|a| a.user_agent_alias = 'Windows IE 7'} # meta ¤¬ charset=Shift_JIS ¤Ç¥Õ¥©¡¼¥à¤Î¤¢¤ë¥Ú¡¼¥¸¤ÎÎã agent.get('http://www.google.com/webhp?hl=ja&lr=lang_ja&ie=Shift_JIS&oe=Shift_JIS') p agent.page.encoding agent.page.form_with(:name => 'f'){|form| # ¡Ö¤Ï¤·¤´¤À¤«¡×üⶶ¤ò¸¡º÷ form.field_with(:name => 'q').value = 'üⶶ' # ¥Õ¥©¡¼¥à¤ÎÁ÷¿®Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤òCP932¤Ë form.page.encoding = 'CP932' # ¸¡º÷·ë²Ì¤Î¥Ú¡¼¥¸¡Ê¤Ï¤·¤´¤À¤«´Þ¤à¡Ë¤òÀµ¤·¤¤Ê¸»ú¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤ÇºÆ¥Ñ¡¼¥¹¡Êº£²ó̵´Ø·¸¡Ë }.click_button.encoding = 'CP932' puts agent.page.title·ë²Ì¡§
"Shift_JIS" üⶶ - Google ¸¡º÷¥æ¡¼¥¶¡¼¤¬»ØÄꤷ¤¿Ê¸»úÎó¤À¤±¤Ç¤Ï¤Ê¤¯¡¢¤â¤È¤â¤È¤Î HTML ¤Î hidden ¤Ëµ½Ò¤µ¤ì¤Æ¤¤¤¿¡Öʸ»ú¥¨¥ó¥³¡¼¥É¥Á¥§¥Ã¥¯ÍÑʸ»ú¡×¤Ê¤É¤¬°ú¤Ã¤«¤«¤ë¤³¤È¤â¤¢¤ê¤Þ¤¹¡£
agent.get(euc_uri).form('f'){|form| form['text'] = 'ùõ¡ÊÄ̾Τ¿¤Á¤¶¤¡Ë' # EUC-JP¤Î¥Ú¡¼¥¸¤«¤é¤Ê¤¼¤«CP932¤ÇÁ÷¤ë form.page.encoding = 'CP932' } # url¤ÎHTML¤¬CP932¤È¤·¤Æ²ò¼áÉÔǽ¤Ê¾ì¹ç¤Ï¥Ñ¡¼¥¹·ë²Ì¤¬ÍøÍѤǤ¤Ê¤¤ agent.visited_page(euc_url).title #=> ??? # ¤Î¤Ç¡¢Ì᤹ agent.visited_page(euc_url).encoding='EUC-JP' agent.visited_page(euc_url).title #=> "¥¿¥¤¥È¥ë"
## Yahoo!¤Ç¤ÎRuby¤ÈMechanize¤Î¸¡º÷·ë²Ì¤Ë¤³¤Îwiki¤¬´Þ¤Þ¤ì¤ë¤«¤òUTF-8¤Çɽ¼¨¤·¤Æ¤Û¤¯¤Û¤¯¤¹¤ë¥¹¥¯¥ê¥×¥È require 'rubygems' require 'mechanize' # ¸¡º÷¥Ü¥Ã¥¯¥¹¤ËÆþ¤ì¤ë¸ì search_word = 'Ruby Mechanize' # ¸¡º÷·ë²Ì¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ÆÍߤ·¤¤¥µ¥¤¥È¤Î¤Æ¤¤È¤¦URL re_my_site = Regexp.new(Regexp.quote('w.livedoor.jp/ruby_mechanize')) agent = Mechanize.new # Yahoo!¸¡º÷¤Ë¥¢¥¯¥»¥¹¤·¤Æ¥Ú¡¼¥¸¤ò¼èÆÀ agent.get('http://search.yahoo.co.jp/') # ¢¬¤Ë´Þ¤Þ¤ì¤ë¥Õ¥©¡¼¥à¤«¤é¡¢name = "w" ¤Ç¤¢¤ë¥Õ¥©¡¼¥à¤ò¤Ò¤È¤Ä¼è¤ê½Ð¤¹ agent.page.form_with(:name => 'w'){|f| # <input name=p id=yschsp size=54 ... ¤Ê¸¡º÷¥Ü¥Ã¥¯¥¹¤Îvalue¤Ë¸¡º÷¸ì¤òÀßÄê # f.field_with(:name => 'p').value = search_word # ºÇ¶á¤Ï¤á¤ó¤É¤¤¤Î¤ÇÆþÎÏÍó¸ÂÄê¤Î Hash É÷µË¡¤Ç¥É¥ó¤µ¤é¤ËÇÜ f['p'] = search_word # ¥é¥¸¥ª¥Ü¥¿¥ó¤È¤·¤Æ2¤Ä¤á¡ÊÇÛÎó1Í×ÁÇÌܡˤΡÖÆüËܸì¤Î¥Ú¡¼¥¸¤Î¤ß¡×¥é¥¸¥ª¥Ü¥¿¥ó¤ò¥Á¥§¥Ã¥¯ f.radiobuttons[1].check # HTML ¤Ç submit ¤È»ØÄꤵ¤ì¤Æ¤¤¤ë¥Ü¥¿¥ó¤ò²¡¤·¤ÆÉáÄ̤˥ե©¡¼¥à¥Ç¡¼¥¿¤òÁ÷¿®¤·¡¢·ë²Ì¤ò¼õ¤±¼è¤ë f.click_button } # ¸¡º÷·ë²Ì¤«¤é¡Ö<li>¤ÎÃæ¤Ë¤¢¤Ã¤¿<a>¡×¤òɽ¤¹Nokogiri¥Î¡¼¥É¥ª¥Ö¥¸¥§¥¯¥È¤òsearch¤Çõ¤·¡¢ # href °À¤ÎÃͤ¬ re_my_site ¤È¥Þ¥Ã¥Á¤¹¤ë¤è¤¦¤Ê¤â¤Î¤ò¤¹¤Ù¤ÆÃê½Ð hit_urls = agent.page.search('li a').find_all{|e| re_my_site =~ e['href']} if hit_urls.empty? then puts 'no result' else # ¡Ö<a>¥¿¥°¤òɽ¤¹Nokogiri¥ª¥Ö¥¸¥§¥¯¥È¡×¤Îinner_text¥á¥½¥Ã¥É¤Ï¥¿¥°¤Ç¶´¤Þ¤ì¤¿Ê¸»úÎó puts hit_urls.map{|e| "#{e.inner_text}\n#{e['href']}"}.join("\n") end·ë²Ì¡ÊUTF-8¡Ë¡§
Mechanize - Ruby Mechanize wiki (ja ... http://w.livedoor.jp/ruby_mechanize/d/Mechanize Mechanize::Form::Button - Ruby ... http://w.livedoor.jp/ruby_mechanize/d/Mechanize::Form::Button
agent.page.form_with(:name => 'f1'){|f| # ¤è¤¦¤Ï Hash ¤Î¤è¤¦¤Ë¥¢¥¯¥»¥¹ p f['q'] # °Ê²¼¤ÈƱ¤¸ p f.field_with(:name => 'q').value }°ú¿ô¤Ï #field ¤¬¼õ¤±ÉÕ¤±¤ë¤â¤Î¤Ç¡¢Ä̾ï¤Ïʸ»úÎó¤«Àµµ¬É½¸½¤Ç¤¹¡£
# ¤Ê¤ó¤À¤³¤ì agent.page.form_with(:name => 'f')['q'] agent.page.forms_with(:name => /\Af/)[1]
agent.page.form_with(:name => 'f1'){|f| # ¤è¤¦¤Ï Hash ¤Î¤è¤¦¤Ë¥¢¥¯¥»¥¹ f['q'] = 'Ruby' # °Ê²¼¤ÈƱ¤¸ p f.field_with(:name => 'q').value = 'Ruby' }Âè 1°ú¿ô¤Î field_name ¤Ï #field ¤¬¼õ¤±ÉÕ¤±¤ë¤â¤Î¤Ç¡¢Ä̾ï¤Ïʸ»úÎó¤«Àµµ¬É½¸½¤Ç¤¹¡£
# b ¤È¤¤¤¦Ì¾Á°¤Î¥Ü¥¿¥ó¤òÌÀ¼¨Åª¤Ë²¡¤·¤ÆÁ÷¿® page.form_with(:name => 'f1'){|form| ... form.click_button(form.button_with(:name => 'b')) }Æ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
# <label> CM¤ÇÃΤä¿ </label> ¤ÊÍó¤ò¥Á¥§¥Ã¥¯ page.forms[0].checkbox_with(:label => ' CM¤ÇÃΤä¿ ').check # ¥é¥Ù¥ë¤Ë¡ÖCM¤ÇÃΤ信פȤ¤¤¦Ê¸»úÎ󤬴ޤޤì¤Æ¤¤¤ëÍó¤ò¥Á¥§¥Ã¥¯ page.forms[0].checkbox_with(:label => /CM¤ÇÃΤä¿/).check # UTF-8 # value °À ¤¬ 32 ¤Ê¥Á¥§¥Ã¥¯¥Ü¥Ã¥¯¥¹Í󤫤é¥Á¥§¥Ã¥¯¤ò¤Ï¤º¤¹ page.forms[0].checkbox_with(:value => '32').uncheckÆ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
# name ¤¬ q ¤ÊÆþÎÏÍó¤Ë 'val' ¤ò¥»¥Ã¥È page.forms[0].field_with(:name => 'q').value = 'val'
# list1 ¤È¤¤¤¦ÁªÂò¥á¥Ë¥å¡¼¤Î2¹àÌÜÌܤò¥Á¥§¥Ã¥¯ page.forms[0].field_with(:name => 'list1').options[1].checkÆ°ºî¤Ë¤Ä¤¤¤Æ¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
require 'rubygems'; require 'mechanize' html = <<HTML <html><title>test</title><body><form> <select name="one"></select> <input type="text" name="two"> <textarea name="three"></textarea> </form></body></html> HTML agent = Mechanize.new page = Mechanize::Page.new(URI.parse('http://localhost/'), {'content-type'=>'text/html'}, html, '200', agent) agent.__send__(:add_to_history, page) p agent.page.forms[0].fields.map{|f| f.name} p agent.page.forms[0].fields.sort.map{|f| f.name}·ë²Ì¡§
["two", "three", "one"] ["one", "two", "three"]
# upload ¤È¤¤¤¦Ì¾Á°¤Î¥¢¥Ã¥×¥í¡¼¥ÉÍ󤫤é¥í¡¼¥«¥ë¤Î 001.jpg ¤ò»ØÄꤷ¤ÆÁ÷¿® page.form_with(:name => 'f1'){|form| form.file_upload_with(:name => 'upload').file_name = './001.jpg' form.click_button }Æ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
# <form id="exform"> ¤Ê¥Õ¥©¡¼¥à¤ò id °À¤ÎÃͤÇÃê½Ð # form_with(:id => 'exform') ¤Ë³ºÅö form = agent.page.forms.find{|f| f.form_node['id'] == 'exform'}
fill_login_field(page) if page.field_with(:name => /login/)
agent.page.form_with(:name => 'f').field_with(:name => 'q').value = 'Ruby'¤È½ñ¤¯Âå¤ï¤ê¤Ë¡¢ÆþÎÏÍóÁªÂò¤È Mechanize::Form::Field#value= ¥á¥½¥Ã¥ÉÉôʬ¤ò¡ÖÈô¤Ð¤·¡×¤Æ¡¢
agent.page.form_with(:name => 'f').q = 'Ruby'¤È½ñ¤±¤ë¤è¤¦¤Ë¤·¤Þ¤¹¡£¤Á¤ç¤¦¤É¡¢#[]= ¥á¥½¥Ã¥É¤òÍøÍѤ¹¤ë¤È¤³¤í¤Î
agent.page.form_with(:name => 'f')['q'] = 'Ruby'¤ÈƱ¤¸¤è¤¦¤Ê¤â¤Î¤Ë¤Ê¤ê¤Þ¤¹¡£
page.forms[0].field_with(:name => 'field').value¤Î¤Ä¤â¤ê¤Ç
page.forms[0].field¤È½ñ¤¯¤È¡¢#field ¥á¥½¥Ã¥É¤Î¸Æ¤Ó½Ð¤·¤À¤È»×¤ï¤ì¤Æ¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£Ruby ¤Î¥á¥½¥Ã¥É̾¤Ë¤Ï - ¤ò´Þ¤à¤³¤È¤â¤Ç¤¤Ê¤¤¤Î¤Ç¡¢
page.forms[0].field_with(:name => 'field-data').value¤Î¤Ä¤â¤ê¤Ç
page.forms[0].field-data¤È½ñ¤¤¤Æ¤â¥¨¥é¡¼¤Ë¤Ê¤ê¤Þ¤¹¡£
page.forms[0].field_with(:name => 'field').value page.forms[0]['field'] page.forms[0].field_with(:name => 'field-data').value page.forms[0]['field-data']¤³¤Î¾ì¹ç¤Ï field ¤È¤¤¤¦Ì¾Á°¤â field-data ¤È¤¤¤¦Ì¾Á°¤âÌäÂê¤Ê¤¯Æ°ºî¤·¤Þ¤¹¤·¡¢¸åÆü¡Ö¤³¤Îq¥á¥½¥Ã¥É¤Ã¤Æ¥Þ¥Ë¥å¥¢¥ë¤Î¤É¤³¤Ë½ñ¤¤¤Æ¤¢¤ë¤Î¡©¡×¤ÈǺ¤à¤³¤È¤â¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£
agent.page.form_with(:name => 'f1'){|form| p agent.page == form.page #=> true }Ä̾Form.new ¤Î°ú¿ô¤Ç»ØÄꤵ¤ì¤¿¥Ú¡¼¥¸¤ÈƱ°ì¥ª¥Ö¥¸¥§¥¯¥È¤¬ÊÖ¤ê¤Þ¤¹¤¬¡¢¼êÆ°ºîÀ®»þ¤Ê¤É¤Ç̵»ØÄê¤À¤Ã¤¿¾ì¹ç¤Ë¤Ï nil ¤òÊÖ¤·¤Þ¤¹¡£
# <label>¡¡ÃËÀ</label> ¤Ê¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:label => '¡¡ÃËÀ').check # ¥é¥Ù¥ë¤Ë¡ÖÃËÀ¡×¤È¤¤¤¦Ê¸»úÎ󤬴ޤޤì¤Æ¤¤¤ë¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:label => /ÃËÀ/).check # UTF-8 # value °À ¤¬ e2 ¤Ê¥é¥¸¥ª¥Ü¥¿¥ó¤Î¤ß on page.forms[0].radiobutton_with(:value => 'e2').checkÆ°ºî¤Ï #xxxx_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
# gender ¤È¤¤¤¦Ì¾Á°¤Ç³ç¤é¤ì¤ë¡Ö¥é¥¸¥ª¥Ü¥¿¥ó¥°¥ë¡¼¥×¡×¤Î2¸ÄÌܤò¥Á¥§¥Ã¥¯ page.forms[0].radiobuttons_with(:name => 'gender')[1].checkÆ°ºî¤Ï #xxxxs_with ¤ò¡¢¾ò·ï¤Ë¤Ä¤¤¤Æ¤Ï #radiobutton_with ¤ò»²¾È¤·¤Æ¤¯¤À¤µ¤¤¡£
form[0].field_with(:name => 'name1').value = 'val1' form[0].field_with(:name => 'name2').value = 'val2'¤È¤¤¤¦2¤Ä¤ÎÆþÎÏÍó¤ËÂФ¹¤ë½èÍý¤ò
forms[0].set_fields('name1' => 'val1', 'name2' => 'val2')¤È Hash ¤òÍѤ¤¤Æ°ìȯ¤Ç½ñ¤¯¤³¤È¤¬¤Ç¤¤Þ¤¹¡£
form[0].fields_with(:name => 'name1')[index1].value = 'val1' form[0].fields_with(:name => 'name2')[index2].value = 'val2'¤Ï
forms[0].set_fields('name1' => ['val1', index1], 'name2' => ['val2', index2]) forms[0].set_fields('name1' => {index1 => 'val1'}, 'name2' => {index2 => 'val2'})¤Î¤É¤Á¤é¤«¤Çɽ¸½¤Ç¤¤Þ¤¹¡£index ¤Ï #fields_with ¤¬ÊÖ¤¹ÇÛÎó¤ËÂФ¹¤ë¤â¤Î¤Ç¡¢0 ¤«¤é»Ï¤Þ¤ê¤Þ¤¹¡£
# °ì½ï°ì½ï tgt = form.xxxx_with(:mes => value) tgt = form.xxxxs.find{|e| value === e.__send__(:mes)}°ú¿ô pattern ¤Ï¾ò·ï¤òɽ¤¹ Hash ¤Þ¤¿¤Ïʸ»úÎó name_str ¤Ç¤¹¡£name_str ¤Î¾ì¹ç¤Ï {:name => name_str} ¤È¤¤¤¦ Hash ¤È¤ß¤Ê¤·¤Þ¤¹¡£
# Object#id ¤Î·ë²Ì¤¬Èæ³Ó¤µ¤ì¤ÆÈᤷ¤¤¤³¤È¤Ë form.field_with(:id => 'firstname')¤É¤¦¤·¤Æ¤â id ¤ä class ¤ÇÃê½Ð¤·¤¿¤¤¾ì¹ç¤Ï¡¢¸µ¤ÎÇÛÎó¤ËÂФ·¤Æ find ¤ò¤«¤±¤Æ¤¯¤À¤µ¤¤¡£
# id ¤Ç¤µ¤¬¤¹ form.fields.find{|field| field['id'] == 'firstname'} # class ¤Ç¤µ¤¬¤¹ form.fields.find{|field| field['class'] == 'cities'}Èæ³Ó¤Ï value ¤Î === ¥á¥½¥Ã¥É¤¬»ÈÍѤµ¤ì¤ë¤Î¤Ç¡¢Àµµ¬É½¸½¤ò Hash ¤ÎÃͤˤ¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¥á¥½¥Ã¥ÉÊÖ¤êÃÍ¤Ï UTF-8 ¤Ê¤Î¤Ç¡¢Àµµ¬É½¸½¤â UTF-8 ¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£
# ¡ÖÁ÷¿®¡×¤È¤¤¤¦Ê¸»úÎ󤬤Ȥˤ«¤¯´Þ¤Þ¤ì¤Æ¤¤¤ë¥Ü¥¿¥ó form.button_with(:value => /Á÷¿®/) # utf-8pattern ¤Ë¥Ú¥¢¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¡¢Á´¤Æ¤òËþ¤¿¤¹¤â¤Î¤ò¤Ò¤È¤ÄÈ´¤½Ð¤·¤Þ¤¹¡Ê¤É¤ì¤«¤òËþ¤¿¤¹¤â¤Î¡¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡Ë¡£
# ¤À¤«¤é°ì½ï¤À¤Ã¤Æ¤Ð tgts = form.xxxxs_with(:mes => value) tgts = form.xxxxs.find_all{|e| value === e.__send__(:mes)}pattern ¤Ë¥Ú¥¢¤òÊ£¿ô»ØÄꤷ¤¿¾ì¹ç¡¢Á´¤Æ¤òËþ¤¿¤¹¤â¤Î¤Î¤ß¤òÈ´¤½Ð¤·¤Þ¤¹¡Ê¤É¤ì¤«¤òËþ¤¿¤¹¤â¤Î¤È¤Ë¤«¤¯Á´Éô¡¢¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡Ë¡£