「プログラム初心者、椛島千愛のRuby on Rails4奮闘記」第3回「ルーティングについて学ぼう」

椛島千愛です。寒い日が続きますがみなさん、いかがお過ごしでしょうか?私は先日、会社の新年会と同期だけの遅めの新年会を行いました。和気藹々とお酒を飲みながら、仕事のことやプライベートのことを話しました。やはり、同期の存在は心強いし、最高の仲間です。今回の同期の飲み会は、手羽先が有名なお店に行ったのですが、6人で30人前完食していました(笑)みんな食べ過ぎ・・・!

さて、Ruby on Railsの勉強は順調でしょうか?私もブロンズ試験に向けて、みなさんと同様コツコツ理解を深めています。前回は、環境設定とRailsで使用されているMVCアーキテクチャーの考え方を学習しました。今回は、ルーティングについて一緒に学習していきたいと思います。(認定教材第7章の内容)

本日のコンテンツ:

1.そもそもルーティングとは?

2.resourcesメソッドを使ったルーティング

3.ネストしたルーティング

1.そもそもルーティングとは?

ルーティングについて詳しく見ていく前に、Railsにおけるルーティングの定義についてみていきましょう。

Railsにおけるルーティングとは、受信したURLから実行すべきアクションを判断するシステムのことです。ルーティングは、config/routes.rbの中に記述していきます。また、ルーティングは、ビューでパスやURLを直接ハードコードすることを避けるためにパスやURLを生成することができます。

Railsでは、原則としてRESTfulなインターフェースに沿ってするのが基本になります。このRESTとは、リレーショナルデータベース管理システムに必要な4つの基本的機能で

ある、データの作成(Create)、読み出し(Read)、更新(update)、削除(Delete)をHTTPRequestの各メソッド(GET/POST/PUT/DELETE)に対応させて、自由に作成/読み出し/更新/削除できるもの(リソース)として扱うアーキテクチャーのことです。下記にわかりやすく表にまとめました。

この考え方をもとにして、下記は私がモデルとモデルを扱うコントローラーを自動的に生成してくれるScaffoldというツールを使って作った簡単な単語帳です。scaffoldは便利なツールなのですが、ちゃんと知った上で使わないと、親切丁寧になんでも自動で作ってくれるので、どこに何があるかわからな〜い!!っていう事態になります。(ちなみに私は何度もなって、その度に同期を質問攻めにしました(笑))なので、慣れるまでは自分で必要なファイルを作ることをお勧めします。


rails g scaffold モデル名 カラム名:型名・・・

例. rails g scaffold words words:string reading:string meaning:string category:integer


と入力して作成しました。上記のコードにプラスして、データベースに実際にwordsテーブルを作成するために、Rakeタスクのdb:migrateを実行します。


rake db:migrate


これをマイグレーションといいますが、このマイグレーションに関しては、次の回で詳しく取り上げたいと思います。今回は、上記の単語帳を題材にして一緒に勉強していきましょう。

 

2.resourcesメソッドを使ったルーティング

ルーティングの設定に関して、もちろん手動で設定する方法もありますが、resourcesメソッドを使いルーティングを設定したほうがとても便利です。resourcesメソッドに対象となるリソース名を指定するだけで、先に挙げたindex、show、new、create、edit、update、destroyの7つに関してルーティングが設定されます。今回例に挙げた単語帳のリソース名は、wordsになります。どのように記述するかみてみましょう。

コーディングする部分は、configフォルダの中のroutes.rbというファイルの中になります。その中身を


resources :words


と記述した後、

その後に、コマンドで


rake routes


を実行します。このコマンドを実行することで、index、show、new、create、edit、update、destroyの7つアクションの繋がりが確認できます。また、このアクションを限定した場合は、onlyやexpectをroutes.rbに記述します。onlyはそのアクションだけ使用したい場合に、exceptはそのアクション以外を使用したい場合に使用します。例えば、


resources :words, only: [:index, :show, :edit]  ※この場合は、index、show、editだけ使用可

resources :words, except: :destroy       ※この場合は、destroy以外は使用可


となります。それぞれ入力して違いを試してみてください。

 

3.ネストしたルーティング

上記の単語帳に管理画面をつけ、ユーザーによって表示を切り替えることができます。例えば、管理画面をUsersと名付けた場合のルーティングの書き方は、下記のようになります。


resources :users do

resources :words


と、記述すると階層化されます。Usersの中にWordsが入ります。上記の書き方を行うことにより、ユーザーによって切り替えが可能になります。余談ですが、この記述を逆にすると大変なことになるので、興味がある方はやってみてください。

ルーティングは、他にもネスト以外に様々なオプションがあります。

例えば、namespaceやcollection、memberがあります。それぞれ活用の仕方があるので、調べてみてください。

ルーティングの内容が大まかに理解できたら、模擬問題ではどのように出題されているか確認しましょう!一般社団法人Rails技術者認定試験運営委員会のHPにて現在、フリー公開されています。この機会にダウンロードしましょう。

 

〜エンディング〜

今回は、ルーティングに絞って勉強しましたが、いかがでしたでしょうか?このコラムも次回が最後になります。思った以上に早かったです。最終コラムは、マイグレーションについて一緒に勉強していく予定です。まだまだインフルエンザや風邪が流行っていますので、体調に気をつけてお過ごし下さい。最終回のコラムもお楽しみに♪

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次