「RAILS GUIDE」を参考に、「Ruby onRails」でブログアプリをつくってみようというシリーズです。前回は、単一記事の表示機能を追加しました。
私自身、勉強中なので解説などをしているわけではなく、自分でした作業を記録しているだけのメモのようなシリーズです。
これまでは、「CRUD」という言葉を知り、記事の一覧表示機能や単一記事の表示機能など「CRUD」の「Read(読み取り機能)」に当たる部分を実装してきました。
「リソースフルなルーティング」について
「リソースフルなルーティング」について調べてみました。
「リソースフルなルーティング」の前に、「RESTfulなルーティング」について。
「RESTfulなルーティング」
「RESTfulなルーティング」とは、操作の対象となるリソースをURLを使って表し、それに対してHTTPメソッドを使って操作を行うものです。
get "/articles", to: "articles#index"
get "/articles/:id", to: "articles#show"
上記のように、手動で個々にルーティングを設定することができます。
「リソースフルなルーティング」
「リソースフルなルーティング」とは、Railsの仕組みで、リソースベースでルーティングを設定できる仕組みのこと。index、show、new、edit、create、update、destroyの7つのアクションへの割当を自動的に行うことができるルーティングです。
リソースというのは操作対象のデータのことで、下記のコードではArticlesリソースのこと、つまりArticlesモデルが扱えるデータのことを指しています。以下のようにルーティングを追加しました。
Rails.application.routes.draw do
root "articles#index"
resources :articles
end
そして、「bin/rails routes」で設定されたルーティングを確認してみると、7つのアクションへのルーティングが設定されていることが確認できました。
Prefix Verb URI Pattern Controller#Action
root. GET / articles#index
articles GET /articles(.:format) articles#index
new_article GET /articles/new(.:format) articles#new
article GET /articles/:id(.:format) articles#show
POST /articles(.:format) articles#create
edit_article GET /articles/:id/edit(.:format) articles#edit
PATCH /articles/:id(.:format) articles#update
DELETE /articles/:id(.:format) articles#destroy
「URL用ヘルパーメソッド」について
「リソースフルなルーティング」を使うと、 「URL用ヘルパーメソッド」を使うことができます。「URL用ヘルパーメソッド」というのは、リソース名から変数名が自動的に生成されて、変数を利用することで、URLを取得できるメソッドのこと。
例えば、「resouces :photos」というルーティングの場合、返ってくるURLは「photos_path」なら「/photos」が、「new/photo/path」なら「/photos/new」が返ってきます。
「URL用ヘルパーメソッド」には2種類あります。
- pathヘルパー(リソース名_path)…ルート以降のパスだけを返す
- urlヘルパー(リソース名_url)…pathヘルパーの値に、プロトコル、ホスト名:ポート番号を加えたフルURLを返す
それぞれの「ヘルパー用メソッド」と返ってくるURLの対応は以下の通りです。
ヘルパー | URL |
---|---|
リソース名_path リソース名_url | /リソース名 |
new_リソース名_path new_リソース名_url | /リソース名/new |
edit_リソース名_path(:id) edit_リソース名_url(:id) | /リソース名/:id/edit |
リソース名_path(:id) リソース名_url(:id) | /リソース名/:id |
今の「app/views/articles/index.html.erb」には、以下のコードが書かれていて、次のような画面が表示されます。
<h1>Articles</h1>
<ul>
<% @articles.each do |article| %>
<li>
<%= article.title %>
</li>
<% end %>
</ul>
viewのコードをヘルパーメソッドを使って、以下のように書き換えます。
<h1>Articles</h1>
<ul>
<% @articles.each do |article| %>
<li>
<a href="<%= article_path(article) %>">
<%= article.title %>
</a>
</li>
<% end %>
</ul>
そうすると、さっきまでテキストだった「Hello Rails」の部分をリンクに変えることができました。
リンクをクリックすると、記事にとびます。
「link_toメソッド」について
ヘルパーメソッドの一つに「link_toメソッド」があります。「link_toメソッド」を使って、さっき記述したコードをさらに簡単に書き換えたいと思います。
「link_toメソッド」は、リンクを生成するヘルパーメソッドで、HTMLのaタグと同じ意味を持っています。さきほど、リンクにした部分を「link_toメソッド」を使って書き換えます。
<h1>Articles</h1>
<ul>
<% @articles.each do |article| %>
<li>
<%= link_to article.title, article %>
</li>
<% end %>
</ul>
「link_toメソッド」を使って書き換えても、先程と同じように記事のタイトルがリンクになって、リンクをクリックすると記事にとぶことができました。
今回はここまでです。今までの「Ruby on Rails」でブログアプリをつくるシリーズは以下のボタンから見られます。
その他に、「ウェブデザイン技能検定3級」の勉強方法についてまとめた記事もあります。私は、ウェブ業界での仕事の経験なし、プログラミングスキルなしの状態から独学で「ウェブデザイン技能検定3級」を取得しました。
経験も知識も何もない私でも、3ヶ月ほど集中して勉強したら1度の受検で合格することができました。「ウェブデザイン技能検定3級」は、実務経験なしでも受検できる国家資格なので、ウェブデザインやプログラミングにご興味のある方は、ぜひ参考にしていただければと思います。
〈参考〉