「Ruby onRails」でブログアプリをつくる⑧リソースフルルーティング

rubyonrailsアイキャッチ ウェブデザイン

「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>
Articles

viewのコードをヘルパーメソッドを使って、以下のように書き換えます。

<h1>Articles</h1>

<ul>
  <% @articles.each do |article| %>
    <li>
      <a href="<%= article_path(article) %>">
        <%= article.title %>
      </a>
    </li>
  <% end %>
</ul>
Articles

そうすると、さっきまでテキストだった「Hello Rails」の部分をリンクに変えることができました。

articles

リンクをクリックすると、記事にとびます。

スポンサーリンク

「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級」は、実務経験なしでも受検できる国家資格なので、ウェブデザインやプログラミングにご興味のある方は、ぜひ参考にしていただければと思います。

〈参考〉

ウェブデザイン
スポンサーリンク
やっぱり静岡がすきだら!