- Äɲ䵤줿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
- ºï½ü¤µ¤ì¤¿¹Ô¤Ï¤³¤Î¿§¤Ç¤¹¡£
[[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/ÊÙ¶¯²ñ]]