[[Ruby on Rails/Âè11²óÊÙ¶¯²ñ - RESTful Rails Development]]
 
 &pgid;
 
 ** Ruby on RailsÊÙ¶¯²ñ°ìÍ÷ [#e49b3032]
 #ls2(Ruby on Rails)
 
 ** Âè11²óÊÙ¶¯²ñ¤Î¥Í¥¿ [#g66b14da]
 ¥Í¥¿¤â¤È¤Ï²¼µ­¤Ç¤¹¡£
 
 b-simple.de - Ruby on Rails, Entwicklung, Coaching und mehr!
 http://www.b-simple.de/documents
 
 ** Æü»þ [#h027fa8b]
 - 2006/04/13(¶â) 
 
 ** »²²Ã¼Ô [#zbecd88f]
 
 #blikimore
 
 ** Æ°²è [#s9f9b274]
 
 ** RESTful Rails [#o85deb23]
 - HTTP¤ÏGET¤äPOST¥á¥½¥Ã¥É¤À¤±¤Ç¤Ê¤¯¡¢PUT, DELETE¥á¥½¥Ã¥É¤â¤¢¤ë
 - REST¤È¤Ï¡¢´Êñ¤Ë¤¤¤¦¤ÈHTTP¤ÎGET, POST¤À¤±¤Ç¤Ê¤¯, PUT, DELETE¤ò»È¤Ã¤¿¤ä¤êÊý¤Ç¤¢¤ë
 - Rails 1.2¤Ç¤ÏREST¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤¿
 - ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤ÏREST¤Î¥³¥ó¥»¥×¥È¤ÈÇطʤÎû¤¤¾Ò²ð¤«¤é¤Ï¤¸¤Þ¤ë
 - Rails¤ÎScaffold¤ò»È¤¦¤È¸«¤ë¤³¤È¤¬¤Ç¤­¤ëREST-Controller¤Èmodel¤Ï¡¢RESTful Rails¤Î³«È¯¤ÎÍý²ò¤ò½õ¤±¤Æ¤¯¤ì¤ë
 - ¼¡¤ËREST Routing¤È¤è¤Ð¤ì¤ëµ¡Ç½¤ÎÀâÌÀ¤ò¤¹¤ë¡£
 - Nested Resources¤Î¾Ï¤Ï¤è¤ê¾åµé¤ÊÆâÍƤǡ¢¤É¤Î¤è¤¦¤ËREST-URL¤Î¥³¥ó¥»¥×¥È¤ËÈ¿¤»¤º¤Ë¡¢¿Æ»Ò´Ø·¸¤Ë¤¢¤ë¥ê¥½¡¼¥¹¤¬¥Í¥¹¥È¤µ¤ì¤ë¤«¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë
 - ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î½ª¤ï¤ê¤Ï¡¢REST¤ÈAJAX¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤À
 - RESTful¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¥Æ¥¹¥È¤·¡¢¥¯¥é¥¤¥¢¥ó¥È¥µ¥¤¥É¤ÎREST¤Î°ìÉô¤Ç¤¢¤ë¡¢ActiveResource¤ò¾Ò²ð¤¹¤ë
 
 ** REST¤È¤Ï¤Ê¤Ë¤«? [#u9c07902]
 - REST¤È¤¤¤¦¸ÀÍÕ¤Î̾¤Å¤±¿Æ¤ÏPh.D.¤À(¥À¥ì?)¡£
 - REST¤È¤¤¤¦¸ÀÍÕ¤Î̾¤Å¤±¿Æ¤Ï [[Roy Fielding:http://yohei-y.blogspot.com/2005/04/rest_23.html]] ¤À¡£
 - Representational State Transfer¤Îά¤À¡£
 - REST¤Ïɸ½àŪHTTP¥á¥½¥Ã¥É¤Ç¤¢¤ëGET, POST, PUT, DELETE¤ò»ÈÍѤ·¤ÆWeb¤Î¥ê¥½¡¼¥¹¤òÍ׵ᤷ¡¢Áàºî¤¹¤ëWeb¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤Î¡¢¥¢¡¼¥­¥Æ¥¯¥Á¥ã¥Ñ¥é¥À¥¤¥à¤òÀâÌÀ¤¹¤ë¡£
 - REST¤Ç¤Ï¥ê¥½¡¼¥¹¤ÏHTTP·Ðͳ¤ÇURL¤Ç¥¢¥É¥ì¥¹ÉÕ¤±¤·¤ÆÍ׵᤬²Äǽ¤À¡£
 - ¥ê¥½¡¼¥¹¤Ï¡¢¥¯¥é¥¤¥¢¥ó¥È¤Î¸Æ¤Ó½Ð¤·¤Ë±þ¤¸¤Æ¡¢HTML¤äXML¤äRSS¤Î¤è¤¦¤Ê°Û¤Ê¤Ã¤¿¥Õ¥©¡¼¥Þ¥Ã¥È¤Çɽ¸½¤Ç¤­¤ë¡£
 - REST-URLs¤Ï¥æ¥Ë¡¼¥¯¤À
 - ¥ê¥½¡¼¥¹URL¤Ï¡¢¤³¤ì¤Þ¤Ç¤ÎRails¤Î¥¢¥×¥ê¤È¤Ï°ã¤¤¡¢¥³¥ó¥È¥í¡¼¥é¤È¤½¤ì¤ËÂбþ¤¹¤ëAction¤Ë¤è¤Ã¤Æ·è¤Þ¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥ê¥½¡¼¥¹¼«¿È¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¡£
  (¿Þ1.1)
 - ¿Þ1.1¤Ç¤Ï¡¢3¤Ä¤Î¥ê¥½¡¼¥¹¤¹¤Ù¤Æ¤Ï¡¢URL¤Î»Ï¤Þ¤ê¤Îidentical part¤Ë¤è¤Ã¤Æ½»½êÉÕ¤±¤é¤ì¡¢¤½¤ì¤¾¤ì¤Ï¤½¤Î¥ê¥½¡¼¥¹¤ÎID¤Ë¤è¤Ã¤Æ¥Õ¥©¥í¡¼¤µ¤ì¤ë¡£
 - Rails¤Ç¤Ï¥³¥ó¥È¥í¡¼¥é¤È¥â¥Ç¥ë¤ÎÁȤ߹ç¤ï¤»¤Æ¥ê¥½¡¼¥¹¤òɽ¸½¤¹¤ë¡£
 - ¥Æ¥¯¥Ë¥«¥ë¤ÊΩ¾ì¤«¤é¤¤¤¦¤È¡¢¿Þ1.1¤Î¥×¥í¥¸¥§¥¯¥È¥ê¥½¡¼¥¹¤ÏProjectController¤ÈActiveRecord¤ò·Ñ¾µ¤·¤¿¥¯¥é¥¹¡ÖProject¡×¤Î¥¤¥ó¥¹¥¿¥ó¥¹¤òÁàºî¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ±þÅú¤Ç¤­¤ë
 
 ** ¤Ê¤¼REST? [#ue4f4c7f]
 - MVC-Consept¤ò»ÈÍѤ·¤Æ2ǯ´ÖRails¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤È¤Æ¤âsuccessfully¤Ë³«È¯¤·¤Æ¤­¤Æ¤¤¤ë¤³¤È¤ò¿´¤ËÊݤäƤ¤¤ë¤È¤­¡¢¤³¤ì¤Ï¤è¤¤¼ÁÌä¤À¡£
 - REST¥Ù¡¼¥¹¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¼¡¤ÎÆÃħ¤¬¤¢¤ë
 -- ¤­¤ì¤¤¤ÊURL¡£
 REST-URL¤Ï¥¢¥¯¥·¥ç¥ó¤Ç¤Ï¤Ê¤¯¥ê¥½¡¼¥¹¤òɽ¸½¤·¤Æ¤¤¤ë¡£
 URL¤Ï¤¤¤Ä¤âƱ¤¸¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¤â¤Ä¡£
 ºÇ½é¤Ë¥³¥ó¥È¥í¡¼¥é¡¼¤¬¤­¤Æ¡¢¤½¤ì¤«¤é»²¾È¤µ¤ì¤ë¥ê¥½¡¼¥¹¤ÎID¤¬¤¯¤ë
 Í׵ᤵ¤ì¤¿Áàºî¤ÏURL¤«¤é±£¤µ¤ì¡¢HTTP ¥á¥½¥Ã¥É¤Çɽ¸½¤µ¤ì¤ë
 -- °Û¤Ê¤Ã¤¿±þÅú¥Õ¥©¡¼¥Þ¥Ã¥È
 REST¥³¥ó¥È¥í¡¼¥é¤Î¥¢¥¯¥·¥ç¥ó¤Ï°Û¤Ê¤Ã¤¿±þÅú¥Õ¥©¡¼¥Þ¥Ã¥È¤òÊÖ¤¹¤³¤È¤¬¤Ç¤­¤ë¡£
 ¥¯¥é¥¤¥¢¥ó¥È¤ÎÍ×µá¤Ë°Í¸¤·¤Æ¡¢Æ±¤¸¥¢¥¯¥·¥ç¥ó¤¬HTML, XML, RSS¤òÊÖ¤¹¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£
 -- ¥³¡¼¥ÉÎ̤¬¾¯¤Ê¤¤
 Ê£¿ô¤Î¥¯¥é¥¤¥¢¥ó¥È¤òÊ䭤Ǥ­¤ë³«È¯¤ÏDRY¤Î°ÕÌ£¤Ë¤ª¤¤¤Ærepetition¤òavoid¤·¡¢¥³¥ó¥È¥í¡¼¥é¡¼¤¬¤è¤ê¾¯¤Ê¤¤¥³¡¼¥É¤â¤Ä·ë²Ì¤È¤Ê¤ë
 -- CRUD»Ø¸þ¥³¥ó¥È¥í¡¼¥é
 ³Æ¥³¥ó¥È¥í¡¼¥é¤¬°ì¤Ä¤Î¥ê¥½¡¼¥¹¥¿¥¤¥×¤ÎÁàºî¤ËÂФ·¤Æ±þÅú²Äǽ¤Ç¤¢¤ë¤È¤¤¤¦ÊýË¡¤Ë¤ª¤¤¤Æ¡¢¥³¥ó¥È¥í¡¼¥é¤È¥ê¥½¡¼¥¹¤Ï²ò¤±¤Æ°ì½ï¤Ë°ì¤Äñ°Ì¤Ë¤Ê¤ë
 -- ÌÀ³Î¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥óÀß·×
 RESTful¤Ê³«È¯¤ÏÌÀ³Î¤Ê¥³¥ó¥»¥×¥È¤Î·ë²Ì¤È¤Ê¤ê¡¢Áàºî²Äǽ¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¥Ç¥¶¥¤¥ó¤Ë¤Ê¤ë
 -- ¤³¤Î¥Á¥å¡¼¥È¥ê¥¢¥ë¤Î4ÈÖÌܤξϤϡ¢Îã¤Î¥Ø¥ë¥×¤ò»È¤Ã¤Æ¡¢¾åµ­¤Î̾Á°ÉÕ¤±¤µ¤ì¤¿ÆÃħ¤Î¤¹¤Ù¤Æ¤òÌÀ³Î¤Ë¤¹¤ë
 
 
 ** What's New [#k109b441]
 - ¤â¤·¡¢¤¢¤Ê¤¿¤¬¡¢REST¤Ë´ð¤Å¤¤¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥óÀ߷פ¬¤¢¤Ê¤¿¤Î²¼²áµî¤Î³«È¯·Ð¸³¤òÍøÍѤǤ­¤Ê¤¯¤¹¤ë¤È¹Í¤¨¤Æ¤¤¤ë¤Ê¤é¡¢»äã¤Ï¤¢¤Ê¤¿¤òassure¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡¢¤¹¤Ê¤ï¤Á¡¢¤½¤ó¤Ê¤³¤È¤Ï¤Ê¤¤¡£
 - REST¤Ï¡¢¤Þ¤ÀMVC¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¤·¡¢µ»½ÑŪ´ÑÅÀ¤Ç¸«¤Æ²¼µ­¡¢¤Î¿·¤·¤¤µ»½Ñ¤Øreduced¤µ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë
 
 -- ¥³¥ó¥È¥í¡¼¥é¤Î¥³¡¼¥É¤Ë¤ª¤¤¤Ærespond_to¤òÍøÍѤ¹¤ë
 -- link¤Èform¤Î¤¿¤á¤Î¿·¤·¤¤helper¥á¥½¥Ã¥É¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë
 -- ¥³¥ó¥È¥í¡¼¥é¥ê¥À¥¤¥ì¥¯¥È¤Ë¤ª¤±¤ëURL-Method¤ÎÍøÍÑ
 -- routes.rb¤ÎÃæ¤Îresource¥á¥½¥Ã¥É¤«¤éÀ¸À®¤µ¤ì¤ë¿·¤·¤¤¿·¤·¤¤·ÐÏ©
 
 ¤¢¤Ê¤¿¤Ï°ìÅÙREST¤òÍý²ò¤·¡¢¤½¤Îµ»½Ñ¤òÍøÍѤ¹¤ì¤Ð¡¢RESTful¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÀ߷פϼ¡¤Îɸ½à¤È¤Ê¤ë¤À¤í¤¦¡£
 
 
 ** Preparations [#tb2e9365]
 - »ä¤¿¤Á¤Ï¡¢»ä¤¿¤Á¤ÎËÜRapidWeb Development mit Ruby on Rails¤ÎÎã¤Ç¤¢¤ë¡¢¥×¥í¥¸¥§¥¯¥È´ÉÍý¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¡ÖOntrack¡×¤Îʸ̮¤È°ì½ï¤ÎÃæ¤Ç¡¢Rails¤Î¿·¤·¤¤ÆÃÄê¤ÎÆÃħ¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤­¤Þ¤¹¡£
 - »ä¤¿¤Á¤Ï´°Á´¤Ê¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò¤³¤³¤Ç¤Ï³«È¯¤·¤Ê¤¤¤À¤í¤¦¤¬¡¢REST¥³¥ó¥»¥×¥È¤Î¤¿¤á¤Îµ»½ÑŪ¤Ê´Ä¶­¤òºîÀ®¤¹¤ë¤¿¤á¤ËƱ¤¸µ»½Ñ¤òÍøÍѤ·¤Þ¤¹¡£
 - ¤Þ¤º¡¢»ä¤¿¤Á¤ÎRails¥×¥í¥¸¥§¥¯¥È¤ÎÀ¸À®¤ò¤Ï¤¸¤á¤Þ¤·¤ç¤¦
  > rails ontrack
 ²¼µ­¤Î¤è¤¦¤Ëdevelopment¤Ètest¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤òºîÀ®¤·¤Þ¤¹
  > mysql -u rails
  Enter password:
  mysql> create database ontrack_development;
  mysql> create database ontrack_test;
  mysql> quit
 
 ** Rails 1.2 [#af4a9054]
 -»ä¤¿¤Á¤Ï¡¢¤¹¤Ù¤Æ¤ÎÆɼԤ¬Rails1.2¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¤¤¤È¤ª¤â¤Ã¤Æ¤¤¤Ê¤¤¤«¤â¤·¤ì¤Ê¤¤¤È»×¤¤¤Þ¤¹¡£
 -¤½¤³¤Ç»ä¤¿¤Á¤Ï¡¢»ä¤¿¤Á¤Îontrack¤ÎÎã¤Î¤ß¤¬¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ò¤Ä¤«¤¦¤è¤¦¤Ë¡¢¥×¥í¥¸¥§¥¯¥È¥Ù¡¼¥¹¤Î1.2¤ÎRails¥¤¥ó¥¹¥È¥ì¡¼¥·¥ç¥ó¤ò¤¹¤ë¤³¤È¤ò¤ª¤¹¤¹¤á¤¹¤ë¡£
 - ¥É¥­¥å¥á¥ó¥È¤Ë¤½¤Ã¤ÆRails1.2¤Î¥¿¥°¤Ïrel_1-2-1¤È̾¤Å¤±¤é¤ì¤ë¡£
   > cd ontrack
   > rake rails:freeze:edge TAG=rel_1-2-1
 - Ê̤ÎRails¤Î¤è¤ê¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë¾ðÊó¤Ïrails¤ÎWeb¥µ¥¤¥È¡¢http://www.rubyonrails.org¤Ç¸«¤Ä¤«¤ë¡£
 
 ** Resource Scaffolding [#qca792a0]
 - REST»Ø¸þ¤ÎRails³«È¯¤Ï¡¢¿·¤·¤¤scaffold¥¸¥§¥Í¥ì¡¼¥¿¤Ç¤¢¤ëscaffold resource¤«¤éºîÀ®¤µ¤ì¤ë¡¢¥ê¥½¡¼¥¹¡ÖProject¡×¤È¤È¤â¤Ë´Êñ¤ËÉÁ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£
 - ¥¸¥§¥Í¥ì¡¼¥¿¤Ï¡¢¥ê¥½¡¼¥¹Ì¾¤Ç¤¢¤ë¡Öproject¡×¤È¤¤¤¦¥Ñ¥é¥á¡¼¥¿¤È¥ª¥×¥·¥ç¥Ê¥ë¤Ê¥â¥Ç¥ë¤Î°À­¤Î¥ê¥¹¥È¤È¡¢¤½¤ì¤é¤Î¥¿¥¤¥×¤òÍ¿¤¨¤é¤ì¤ë
 - ¤³¤ì¤é¤Î°À­¤Ï¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Þ¥¤¥°¥ì¡¼¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¤È¡¢ºîÀ®¤µ¤ì¤ë¥Ó¥å¡¼¤Îappropriate¥Õ¥£¡¼¥ë¥É¤â¤Þ¤¿É¬ÍפȤµ¤ì¤ë¡£
 
  ruby script/generate scaffold_resource project name:string desc:text
 
  exists app/controllers/
  exists app/helpers/
  create app/views/projects
  exists test/functional/
  exists test/unit/
  create app/views/projects/index.rhtml
  create app/views/projects/show.rhtml
  create app/views/projects/new.rhtml
  create app/views/projects/edit.rhtml
  create app/views/layouts/projects.rhtml
  create public/stylesheets/scaffold.
  create app/models/project.rb
  create app/controllers/projects_controller.
  create test/functional/projects_controller_
  create app/helpers/projects_helper.
  create test/unit/project_test.rb
  create test/fixtures/projects.yml
  create db/migrate
  create db/migrate/001_create_projects.
  route map.resources :projects
 
 - ¥¸¥§¥Í¥ì¡¼¥¿¤Ï¥â¥Ç¥ë¤À¤±¤Ç¤Ê¤¯¡¢¥³¥ó¥È¥í¡¼¥é¡¢¥Ó¥å¡¼¤½¤·¤Æ¡¢µ¡Ç½Åª¤Ê¥Þ¥¤¥°¥ì¡¼¥·¥ç¥ó¥¹¥¯¥ê¥×¥È¤È¿·¤·¤¤¥Þ¥Ã¥Ô¥ó¥°¥¨¥ó¥È¥ê¡¡map.resources :projects ¤òconfig/routes.rb¤ÎÃæ¤Ë¡¢À¸À®¤·¤¿¡£
 
 - ¤½¤ì¤Ï¡¢»ä¤¿¤Á¤Î¥³¥ó¥È¥í¡¼¥é¡¼¤¬Resultful¤ÊURL¤ËÂФ·¤Æ±þÅú¤Ç¤­¤ë¤è¤¦¤Ê¥Þ¥Ã¥Ô¥ó¥°¤Î¥¨¥ó¥È¥ê¡¼¤À¡£
 
 
 ** The Model [#o6c42584]
 
 - »ä¤¿¤Á¤ÏºÇ½é¤Ë¸À¤Ã¤¿¤è¤¦¤Ë¡¢REST¤Î¥ê¥½¡¼¥¹¤Ï¡¢¥³¥ó¥È¥í¡¼¥é¤È¥â¥Ç¥ë¤Î¥³¥ó¥Ó¥Í¡¼¥·¥ç¥ó¤Îʸ̮¤Ç¤¢¤ë¡£
 - ¥â¥Ç¥ë¤Ï¡¢Ä̾ï¤ÎActiveRecord::Base:¤ò·Ñ¾µ¤·¤¿ActiveRecord¥¯¥é¥¹¤À¡£
   class Project < ActiveRecord::Base
   end
 - ¤Ê¤Î¤Ç¡¢¥â¥Ç¥ë¤Î¾ì¹ç¤Ï¡¢¤Ê¤Ë¤â¿·¤·¤¤¤³¤È¤ò³Ø¤Ö¤³¤È¤Ï¤Ê¤¤¡£
 ¤·¤«¤·¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹¤Î¥Æ¡¼¥Ö¥ë¤òºî¤ë¤Î¤Ï˺¤ì¤Ê¤¤¤è¤¦¤Ë¡£
   > rake db:migrate
 
 
 ** The Controller [#x6f8e24f]
 
 - À¸À®¤µ¤ì¤¿ProjectsController¤Ï¡¢Project¥ê¥½¡¼¥¹¤òÁàºî¤¹¤ë¤¹¤ë¡¢CRUD-Controller¤À¡£
 - ¤³¤ì¤Ï¡¢¥³¥ó¥È¥í¡¼¥é¤ÏÀµ³Î¤Ë°ì¤Ä¤Î¥ê¥½¡¼¥¹¥¿¥¤¥×¤Ë°¤·¡¢»Í¤Ä¤ÎCRUD¤ÎÁàºî¤½¤ì¤¾¤ì¤ÎÀ߷פµ¤ì¤¿¥¢¥¯¥·¥ç¥ó¤òÄ󶡤¹¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë¡£
  class ProjectsController < ApplicationController
    # GET /projects
    # GET /projects.xml
    def index...
    # GET /projects/1
    # GET /projects/1.xml
    def show...
    # GET /projects/new
    def new...
    # GET /projects/1;edit
    def edit...
    # POST /projects
    # POST /projects.xml
    def create...
    # PUT /projects/1
    # PUT /projects/1.xml
    def update...
    end
    # DELETE /projects/1
    # DELETE /projects/1.xml
    def destroy...
    end
  end
 
 - ¤â¤·¡¢¤¢¤Ê¤¿¤¬À¸À®¤µ¤ì¤¿¥³¥ó¥È¥í¡¼¥é¤ò¤ß¤ë¤Ê¤é¡¢¿·¤·¤¤¤â¤Î¤ò¤½¤³¤Ë¤Ï¤ß¤Ä¤±¤Ê¤¤¤À¤í¤¦¡£
 - ¤¹¤Ê¤ï¤Á¡¢¥×¥í¥¸¥§¥¯¥È¤òÀ¸À®¡¢¸¡º÷¡¢¹¹¿·¤¹¤ë¤¿¤á¤Î¥¢¥¯¥·¥ç¥ó¤¬¤¢¤ë¡£
 - ¥³¥ó¥È¥í¡¼¥é¤È¥¢¥¯¥·¥ç¥ó¤ÎξÊý¤Ï¡¢ºÇ½é¤Î¥°¥ì¡¼¥¹¤ÇÉáÄ̤˸½¤ì¤ë
 - ¤·¤«¤·¡¢¤½¤ì¤é¤Ï¡¢HTTP Æ°»ì(?)¤Ë¤è¤Ã¤Æ´Þ¤Þ¤ì¤ë¥ê¥¯¥¨¥¹¥ÈURL¤Î´ØÏ¢¤òɽ¼¨¤¹¤ë¡¢À¸- À®¤µ¤ì¤¿¥³¥á¥ó¥È¤ò¤â¤Ã¤Æ¤¤¤ë
 - ¤½¤³¤Ë¤ÏREST-URL¤¬¤¢¤ê¡¢¼¡¤Î¥»¥¯¥·¥ç¥ó¤Ç¾Ü¤·¤¯¸«¤Æ¤¤¤¯¡£
 
 
 **  REST-URLs [#caa203c2]
 - REST-URL¤Ï¡¢¤³¤ì¤Þ¤Ç¤Îralis¤Î¤è¤¦¤Ê controller/action/id¤Î·Á¼°¤Ç¤Ï¤Ê¤¤
 - controller̾¤Î¤¢¤È¤ËID¤¬¤¯¤ë
  /projects/1
 - Action¤¬¤Ê¤¤¤¬¡¢¤½¤ì¤ÏHTTP Method¤Ç¤­¤Þ¤ë
 |HTTP  |Verb       |REST-URL|Action|URL without REST       |h
 |GET   |/projects/1|show    |GET|/projects/show/1   |
 |DELETE|/projects/1|destroy |GET|/projects/destroy/1|
 |PUT   |/projects/1|update  |POST|/projects/update/1 |
 |POST  |/projects  |create  |POST|/projects/create   |
 - URL¤ÏPOST°Ê³°¤Ï¤ß¤ó¤ÊƱ¤¸¡£POST¤Î¾ì¹ç¤Ï¡¢¿·µ¬¤ËºîÀ®¤À¤«¤é¡¢¤Þ¤ÀID¤¬·è¤Þ¤Ã¤Æ¤¤¤Ê¤¤
 - Web¥Ö¥é¥¦¥¶¤ÏDELETE¤ÈPUT¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤
 - Rails¤Ï¡¢¥ê¥½¡¼¥¹¤òºï½ü¤¹¤ë¤¿¤á¤Î¥ê¥ó¥¯¤òÀ¸À®¤¹¤ë¤¿¤á¤ÎÆüì¤Ê¥Ø¥ë¥Ñ¡¼¤òÄ󶡤·¤Þ¤¹
 - POST¥ê¥¯¥¨¥¹¥È¤Îhidden¥Õ¥£¡¼¥ë¥É¤Ç¥µ¡¼¥Ð¡¼¤ÇDELETE¥á¥½¥Ã¥É¤ËÊÑ´¹¤µ¤ì¤ë(1.8.3¤ÇÀâÌÀ)
 - PUT¥ê¥¯¥¨¥¹¥È¤âƱÍÍ(1.8.2¤ÇÀâÌÀ)
 
 
 **  REST actions are using respond to [#c6803637]
 
 - REST action¤Ï¤³¤È¤Ê¤ë¥ì¥¹¥Ý¥ó¥¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ç¡¢¤³¤È¤Ê¤ë¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×¤ËÈ¿±þ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë
 - Web ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤Îŵ·¿Åª¥¯¥é¥¤¥¢¥ó¥È¥¿¥¤¥×¤Ï¤â¤Á¤í¤ó¥Ö¥é¥¦¥¶¥¯¥é¥¤¥¢¥ó¥È¤Ç¤¢¤ë¤¬¡¢Web¥µ¡¼¥Ó¥¹¥¯¥é¥¤¥¢¥ó¥È¤ÏXML¤òͽ´ü¤¹¤ë¤·¡¢RSS¥ê¡¼¥À¡¼¤ÏRSS¤äAtom¥Õ¥©¡¼¥Þ¥Ã¥È¤òͽ´ü¤¹¤ë
 - ¥¯¥é¥¤¥¢¥ó¥È¤Ë¤è¤Ã¤Æ¥ê¥¯¥¨¥¹¥È¤µ¤ì¤¿²óÅú¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÀ¸À®¤Î¤¿¤á¤ÎÃæ±û¤Î¥³¥ó¥È¥í¡¼¥ë¥¤¥ó¥¹¥¿¥ó¥¹¤Ï¡¢respond to¥á¥½¥Ã¥É¤Ç¤¢¤ë¡£
 - ¤³¤ì¤Ï¡¢¤¹¤Ç¤Ë¡¢scafforldgenerater¤Ë¤è¤Ã¤Æ¡¢CRUD¥¢¥¯¥·¥ç¥ó¤ÎÃæ¤Ë¡¢À¸À®¤µ¤ì¤Æ¤¤¤ë¡£
 - ¼¡¤Î¥³¡¼¥É¤ÎÃÇÊÒ¤Ïshow¥¢¥¯¥·¥ç¥ó¤Ç¤Îrespond_to¤ÎÍøÍÑÎã¤À
  # GET /projects/1
  # GET /projects/1.xml
  def show
    @project = Project.find(params[:id])
    respond_to do |format|
      format.html # show.rhtml
      format.xml { render :xml => @project.to_xml }
    end
  end
 - respond to¤Ï¥Õ¥©¡¼¥Þ¥Ã¥È¤òÆÃÄꤷ¤¿»Ø¼¨¤ò¤È¤â¤Ê¤¦¥Ö¥í¥Ã¥¯¤ò»ý¤Ã¤Æ¤¤¤ë
 - Îã¤Ç¤Ï¡¢Æó¤Ä¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤ò½èÍý¤·¤Æ¤¤¤ë: HTML, XML
 - ¤Ê¤Ë¤âµ¯¤³¤é¤Ê¤±¤ì¤Ðshow.rhtml¤ò»È¤Ã¤¿HTML¤¬¤«¤¨¤ë
 - ¤â¤·¡¢¥Õ¥©¡¼¥Þ¥Ã¥È¤¬XML¤Ê¤éXML¤¬ÊÖ¤ë
 - respond_to¤Ï¡Öaccept¡×HTTP¥Ø¥Ã¥À¤Îaccept¥Õ¥£¡¼¥ë¥É¤«¡¢URL¤Î½ñ¼°(³ÈÄ¥»Ò¤Ê¤É)¤ÇȽÄꤹ¤ë
 
 ** Accept-Field of the HTTP-Header [#u9122088]
 - ¡Öcurl¡×¥³¥Þ¥ó¥É¤ò»È¤¦¤È¡¢HTTP¥Ø¥Ã¥À¤¬´Êñ¤ËÁàºî¤Ç¤­¤ë
 - Accept¥Ø¥Ã¥À¤Ëapplication/xml¤ò»ØÄꤷ¤Æ¡¢GET¤·¤Æ¤ß¤ë
  curl -H "Accept: application/xml" -i -X GET http://okra.ark-web.jp/~shida/sandbox/restful_rails/projects
 
 
 ** Format specification via the URL [#l65aa792]
 - ¼¡¤ÎURL¤ÇXMLɽ¸½¤òÍ×µá¤Ç¤­¤ë
  http://localhost:3000/projects/1.xml
 
 ** REST-URLs and Views [#u8683cf6]
 - link_to¤ÏREST URL¤ËÂбþ¤·¤Ê¤¤
 - link¤È¥Ü¥¿¥ó¤Ë¤è¤Ã¤Æ¡¢HTTP ¥á¥½¥Ã¥É¤ÈURL¤òÁ÷¿®¤Ç¤­¤ë¤³¤È¤¬½ÅÍ×
 - Path¥á¥½¥Ã¥É¤ò¸Æ¤Ö¤³¤È¤Çhash¤¬ÃÖ¤­´¹¤¨¤é¤ì¤ë
 - controller ¤Èaction¤Èproject_id¤ÎÂؤï¤ê¤Ëproject path(:id) ¤¬ÍøÍѤµ¤ì¤ë
  link_to "Show", project_path(project)
  =>
  <a href="/projects/1">Show</a>
 - URL¤¬REST URL¤Ë¤Ê¤Ã¤Æ¤¤¤ë
 - ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏGET
 - ¡ÖTable 1.2: Standard Path-Methods¡×¤Ë¤¢¤ë¤è¤¦¤Ë¡¢¥ê¥½¡¼¥¹¤´¤È¤Ë¡¢Rails¤Ï7¤Ä¤Îɸ½àŪ¤Ê¥ê¥ó¥¯¤òÀ¸À®¤¹¤ë
 - ¤½¤ì¤¾¤ì¤Î¥Ñ¥¹¥á¥½¥Ã¥É¤ÏHTTP¥á¥½¥Ã¥É¤È´ØÏ¢¤Å¤±¤é¤ì¡¢link¤ä¥Ü¥¿¥ó¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤È¡¢¥µ¡¼¥Ð¡¼¤ØÁ÷¤é¤ì¤ëHTTP¥á¥½¥Ã¥É¤Ç¤¢¤ë¤³¤È¤ò°ÕÌ£¤¹¤ë
 - show¤Èupdate¤Ï¡¢GET¤ÈPOST¤Ê¤Î¤Ç¤½¤Î¤Þ¤Þ
 - create¤Èdelete¤Ï¡¢hidden ¥Õ¥£¡¼¥ë¥É¤ò»È¤Ã¤¿¡¢Æüì¤ÊÊýË¡¤Ç¼è¤ê°·¤ï¤ì¤ëɬÍפ¬¤¢¤ë¡£
 - ¤³¤ì¤Ï¥Ö¥é¥¦¥¶¤ÏPUT, DELETE¤Ï²ò¼á¤Ç¤­¤Ê¤¤¤¿¤á¤À¡£
 |Path-Method         |HTTP verb|Path            |Requested Action|h
 |projects_path       |GET      |/projects       |index           |
 |project_path(1)     |GET      |/projects/1     |show            |
 |new_project_path    |GET      |/projects/new   |new             |
 |edit_project_path(1)|GET      |/projects/1;edit|edit            |
 |projects_path       |POST     |/projects       |create          |
 |project_path(1)     |PUT      |/projects/1     |update          |
 |project_path(1)     |DELETE   |/projects/1     |destroy         |
 - ɽ¤ÎºÇ½é¤ÎÆó¤Ä¤Ï¥ª¥Ã¥±¡¼
 - new_project_path¤Èedit_project_path¤Ï¡¢REST URL¤È¥Þ¥Ã¥Á¤·¤Ê¤¤
 
 
 ** New and Edit [#u4b40e7c]
 - New-Link¤ò¥¯¥ê¥Ã¥¯¤¹¤ë¤ÈGET¤Ç¥µ¡¼¥Ð¡¼¤ËÁ÷¿®¤µ¤ì¤ë
  link_to "New", new_project_path
  =>
  <a href="/projects/new">New</a>
 - ¤³¤ì¤ÏREST¤Îů³Ø¤ò²õ¤¹¤«?
 - new¤ÏCRUD¥¢¥¯¥·¥ç¥ó¤Ç¤Ï¤Ê¤¤¡£¤³¤ì¤Ï¥ê¥½¡¼¥¹¤òÀ¸À®¤¹¤ë¤¿¤á¤Î½àÈ÷¤Ç¤¢¤ë¡£
 - new¥Õ¥©¡¼¥à¤ÏºÇ½ªÅª¤Ë¥µ¥Ö¥ß¥Ã¥È¤µ¤ì¤ë»þ¡¢¤Ï¤¸¤á¤ÆCRUD¤Îcreate¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë
 - ¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ïnew¥Õ¥©¡¼¥à¤òɽ¼¨¤¹¤ë»þ¤À¤±»ÈÍѤµ¤ì¤ë
 - edit_project_path¥á¥½¥Ã¥É¤âƱÍÍ¡£CRUD¥¢¥¯¥·¥ç¥ó¤Îupdate¤Î½àÈ÷¤Î¤¿¤á¤Ë»ÈÍѤµ¤ì¤ë
 - edit¥Õ¥©¡¼¥à¤ò¥µ¥Ö¥ß¥Ã¥È¤µ¤ì¤¿»þ¤Ë¼ÂºÝ¤Îupdate¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë
 - À¸À®¤µ¤ì¤ëhref°À­¤Ï¼¡¤Î¤è¤¦¤Ê¤â¤Î
  edit_project_path¤Ènew_project_path¤Î°ã¤¤¤Ïid¤¬É¬Íפ«¤É¤¦¤«
  link_to "Edit", edit_project_path(project)
  =>
  <a href="/projects/1;edit">Edit</a>
 - CRUD¤Ç¤Ï¤Ê¤¤¤Î¤Ç¡¢new¤âedit¤âURL¤ÎÃæ¤Ë¥¢¥¯¥·¥ç¥ó¤¬Æþ¤ë¤Î¤ÏÌäÂê¤Ê¤¤
 - ¤³¤Î¸¶Â§¤Ïɸ½à¤ÎCRUD¤Ç¤Ï¤Ê¤¤¥¢¥¯¥·¥ç¥ó¤Î̾Á°¤ò³«È¯¤¹¤ë»þ¤âÍøÍѤǤ­¤ë
 
 
 ** Path-Methods in forms: Create and Update [#f4203e21]
 - REST¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ç¤Ï¡¢form_for¤äform_tag¤ÎURL¥Ï¥Ã¥·¥å¤Ï¡¢path¥á¥½¥Ã¥É¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë
 -- new¥Õ¥©¡¼¥à¤Î¤¿¤á¤Ëprojects_path¤ÏÍøÍѤµ¤ì¤ë
 -- edit¥Õ¥©¡¼¥à¤Î¤¿¤á¤Ëproject_path(:id)¤ÏÍøÍѤµ¤ì¤ë
 
 *** The New Form [#n944e779]
 - °ìÈÌŪ¤ÊPOST¤Ç¥µ¡¼¥Ð¡¼¤ËÁ÷¿®¤µ¤ì¤ë
 - ID¤Ê¤·¤Îprojects_path¤Ï/projects¤Ë¤Ê¤ë
  form_for(:project, :url => projects_path) do |f| ...
  =>
  <form action="/projects" method="post">
 
 ** The Edit Form [#tc69c296]
 - REST¤Ç¤Ïupdate¤Ï¡¢PUT¥á¥½¥Ã¥É¤Ç¥ê¥¯¥¨¥¹¥È¤µ¤ì¤ë
 - ¤Ç¤â¡¢PUT¤âDELETE¤âWeb¥Ö¥é¥¦¥¶¤Ç¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤
 - Rails¤Î¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¡¢form_for¤Î:html_hash¥ª¥×¥·¥ç¥ó¤Ç¡¢¥á¥½¥Ã¥É»ØÄê¤ò¤¹¤ëÊýË¡¤À¡£
 
  form_for(:project, :url => project_path(@project),
           :html => { :method => :put }) do |f| ...
  =>
  <form action="/projects/1" method="post">
  <div style="margin:0;padding:0">
  <input name="_method" type="hidden" value="put" />
  </div>
 
 - _method¤È¤¤¤¦hidden¥Õ¥£¡¼¥ë¥É¤¬À¸À®¤µ¤ì¤Æ¤¤¤ë
 - ¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¤¬¤³¤ÎÃͤò¤ß¤Æ¡¢update¥¢¥¯¥·¥ç¥ó¤ò¸Æ¤Ó½Ð¤·¤Æ¤¯¤ì¤ë¡£
 
 ** Destroy [#a7db9e9b]
 - show¤Èdelete¤Ç¤Ïproject_path¤ò»È¤¦
  link_to "Show", project_path(project)
  link_to "Destroy", project_path(project), :method => :delete
 - destroy¤Î¥ê¥ó¥¯¤À¤±¡¢:method¥¢¥¯¥·¥ç¥ó¤¬¤¢¤ë¡£
 - Web¥Ö¥é¥¦¥¶¤ÏDELETE¥á¥½¥Ã¥É¤ò¥µ¥Ý¡¼¥È¤·¤Ê¤¤¤Î¤Ç¡¢Rails¤Ï¡¢¼¡¤Î¤è¤¦¤ÊJavaScript¤òÀ¸À®¤¹¤ë
 
  link_to "Destroy", project_path(project), :method => :delete
  =>
  <a href="/projects/1"
  onclick="var f = document.createElement(¡Çform¡Ç);
  f.style.display = ¡Çnone¡Ç; this.parentNode.appendChild(f);
  f.method = ¡ÇPOST¡Ç; f.action = this.href;
  var m = document.createElement(¡Çinput¡Ç);
  m.setAttribute(¡Çtype¡Ç, ¡Çhidden¡Ç);
  m.setAttribute(¡Çname¡Ç, ¡Ç_method¡Ç);
  m.setAttribute(¡Çvalue¡Ç, ¡Çdelete¡Ç); f.appendChild(m);f.submit();
  return false;">Destroy</a>
 - JavaScript¤¬¥Õ¥©¡¼¥à¤òÀ¸À®¤·¤Æ¡¢_method¥Ñ¥é¥á¡¼¥¿¤Ä¤­¤ÇPOST¥á¥½¥Ã¥É¤Çsubmit¤·¤Æ¤¤¤ë¡£
 - Rails¤Î¥Ç¥£¥¹¥Ñ¥Ã¥Á¥ã¤¬¤³¤Î¥Ñ¥é¥á¡¼¥¿¤ò²ò¼á¤·¤Ædestroy¥¢¥¯¥·¥ç¥ó¤¬¸Æ¤Ð¤ì¤ë¡£
 
 
 tag: [[Ruby on Rails>tag/Ruby on Rails]], [[ÊÙ¶¯²ñ>tag/ÊÙ¶¯²ñ]]
 
 

¥È¥Ã¥×   ¿·µ¬ °ìÍ÷ ñ¸ì¸¡º÷ ºÇ½ª¹¹¿·   ¥Ø¥ë¥×   ºÇ½ª¹¹¿·¤ÎRSS

¥¢¡¼¥¯¥¦¥§¥Ö¤Î¥µ¡¼¥Ó¥¹¤ä¥½¥ê¥å¡¼¥·¥ç¥ó¤Ï¤³¤Á¤é