Rails MVC & ルーティング

前のページでデータベースを更新したので、Postに関係するページが利用できるようになっています。

scaffold実行時にconfig/routes.rbファイルにresources :postsの1行が追加されており、

この1行だけでRESTfulなルーティングが用意されます。bundle exec rake routesコマンドを使って現在のルーティングを確認してみましょう。

この出力は、http://localhost:3000/postsにアクセスするとPostsControllerのindexアクションがリクエストを処理し、http://localhost:3000/postsにPOSTリクエストを送るとPostsControllerのcreateアクションに処理が渡される、という対応付けを示しています。実際にhttp://localhost:3000/postsにアクセスしてみると次のようなページが見えると思います。


 
posts

posts

アクションはController内にメソッド定義の形で記述されています。たとえばPostsControllerのindexアクションは以下の通りです。

そしてindexアクションの結果は、app/views/posts/index.html.erbファイルに渡され、ユーザの目に見えるHTMLを生成します。.htmlの後に.erbがついていて奇妙に感じたかもしれませんが、これはERBと呼ばれ、通常のHTMLの中に<% %><%= %>のような形でRubyコードを埋め込めるテンプレートエンジンです。

PostsController#indexで定義された@postsインスタンス変数を受け取り、index.html.erbの中でeachを回しているのがわかります。何かデータを入れてみましょう。New Postをクリックすると次のような投稿画面に移動します。


 
newpost2

newpost2

適当な文字を入れてCreate Postボタンを押す手順を何度か繰り返すと、先ほど何もなかった/posts画面にデータが表示されました。


 
posts2

posts2

デザインは無いに等しく、このまま「完成形」として人前に出せるものではありませんが、コードを1行も書かずに「一覧表示」「投稿フォーム」「変更/削除機能」を用意出来てしまうのがscaffoldの面白いところです。Railsを学習し始めたばかりの人はまずscaffoldでテンプレートを生成し、それをいじりながら仕組みを覚えていくのがオススメです。

ここまでで、scaffoldとRailsのコードの流れをひとめぐりできました。 次回からはコードに手を入れてTwitter(のようなもの)の作成を続けて行こうと思います。



※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。