TOPシステム開発> Ruby on Railsの新機能で付箋紙を作る
Ruby on RailsとAdobe AIRでデスクトップアプリを作る
Ruby on RailsとAdobe AIRでデスクトップアプリを作る

第2回:新機能「scaffold_resource」とは?

著者:ワイズノット  増井 雄一郎   2007/9/12
1   2  3  次のページ
Ruby on Railsの新機能で付箋紙を作る

   「第1回:付箋紙アプリケーションを作ろう!」では、Ruby on Rails(以下、RoR)1.2で追加された新機能「scaffold_resource」を使って、付箋紙の情報(Stickyモデル)を読み書きするStickiesコントローラを生成しました。

   このscaffold_resourceで生成されたコントローラは、通常のscaffoldと異なる「RESTful」という呼び出し方法をサポートしています。この方法では外部のプログラムから接続がしやすいように、HTMLではなくXML形式でデータを出力します。

   さて今回はStickiesコントローラの動きを追いかけてみましょう。

Stickiesコントローラの仕組み

   まずはルートファイルです。通常のコントローラは「/コントローラ名/アクション名/id」という形でアクセスします。これについては「config/route.rb」の中にあるルールで定義されています(リスト1)。

リスト1:config/route.rb一部抜粋
map.connect ':controller/:action/:id.:format'
map.connect ':controller/:action/:id'

   「第1回:付箋紙アプリケーションを作ろう!」の最後で試したように、付箋紙一覧をXMLで取り出す際には「http://localhost:3000/stickies.xml」の形でアクセスします。このため、Stickies.xmlコントローラを呼び出そうとします。

   実はscaffold_resourceは、モデルやコントローラを生成すると同時に、ルートファイルに以下の1行を追加しているのです。

map.resources :stickies

   この「map.resource」は、RESTfulを使ったコントローラ用のルートマッピング指定です。これを使うことで、表1のようなURLをルートするようになります。一番の違いは、同じURLでもアクセスするHTTPメソッドによって、呼び出されるアクションが違うことです。

呼び出されるアクション URL HTTPメソッド
index /stickies GET
show /stickies/1 GET
new /stickies/new GET
create /stickies POST
edit /stickies/1;edit GET
update /stickies/1 PUT
destroy /stickies/1 DELETE

表1:呼び出されるアクションとURL、メソッドの関係

   RESTでは、URLを名詞、HTTPメソッドを動詞と考えます。例えばStickyのidが1をあらわすURLは「/stickies/1」になるのです。これを表示するためにはGETメソッドで、更新する場合にはPUTメソッドでそれぞれアクセスを行います。

付箋紙情報へのアクセス
図1:付箋紙情報へのアクセス

1   2  3  次のページ


株式会社ワイズノット 増井 雄一郎
著者プロフィール
株式会社ワイズノット  増井 雄一郎
PukiWikiなどのオープンソース活動を経て、2005年からRuby on Railsに的を絞り、2006年はRubyに関する仕事のみで生計をたてる。これまでのフリー活動から転身し、アメリカ行きを目指して2007年4月に(株)ワイズノットに入社。クロスメディア事業部でSaaSプラットフォームの構築に従事。現在の興味はテキストマイニング。


INDEX
第2回:新機能「scaffold_resource」とは?
Ruby on Railsの新機能で付箋紙を作る
  アクションの処理と問題の解決
  別の出力形式にも対応可能