0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Rails】route.rbのパスの指定方法

0
Posted at

はじめに

こんにちは。アメリカで独学でエンジニアを目指している者です。
現在 Rails を勉強中で、routes.rb のルーティングの指定方法について、忘れないうちにまとめておきたいと思い、この記事を書きました。

ルーティングとは

Railsでは、ユーザーがアクセスしたURL(例: GET /help)をどのコントローラのどのアクションに結びつけるかを、routes.rb というファイルで定義します。典型的には以下のような記述を行います。

Rails.application.routes.draw do
  get '/help', to: 'static_pages#help'
end

この場合、"/help" に GETリクエストが送られると、StaticPagesControllerhelp アクションが実行されるという設定になります。

名前付きルートヘルパーについて

Railsは、ルーティングで定義したURLに応じて名前付きルートヘルパーというメソッドを自動生成します。例えば、上の例では以下のヘルパーメソッドが使えるようになります。

  • help_path -> "/help"
  • help_url -> http://localhost:3000/help (開発環境の場合)

Railsの慣習としては、ビューなどでリンクを貼る場合には help_path を使うことが多く、リダイレクトするときには help_url を用いることがあるようです。

ルーティングの書き方

Railsチュートリアルでは2つのルーティングの書き方について習いました(8章まで)。

  • get '/help', to: 'static_pages#help'(URL指定)
  • get 'static_pages/help'

get '/help', to: 'static_pages#help'(URL指定)

  1. URLがシンプル
    コントローラ名を表示しないので、/help のような短いURLになります。ユーザーにも覚えやすく、入力しやすいです。

  2. SEO(検索エンジン最適化)に良い
    シンプルなURLは検索エンジンにも好まれ、サイトの評価が上がる可能性があります。

  3. 名前付きルートが自動生成される
    例えば '/help' を定義すると、help_pathhelp_url というシンプルな名前付きルートが生成されます。

get 'static_pages/help'

  1. コントローラとアクションの対応が明確
    static_pages/help のように書くことで、「コントローラ名が static_pages でアクションが help なんだな」とひと目で分かります。

  2. 小規模・学習用途で手軽に使える
    開発の初期段階や学習目的であれば、特別にURLをカスタマイズしなくてもよいケースがあります。

どちらのルーティングの書き方を使うべきか

Railsチュートリアルでも解説されていますが、上記の内容を踏まえると、get '/help', to: 'static_pages#help'(URL指定)の書き方を採用するのが一般的におすすめです。
ユーザーにとっては /help/about のように短いURLのほうが理解しやすく、入力もしやすいでしょう。
また、'static_pages#help' は「StaticPages コントローラーの help アクションを使う」と明示的に指定しています。
一方、get 'static_pages/help' は URLからコントローラーとアクション名をRailsが推測しているため、誤ったルーティングが設定されるリスクがわずかにあるといわれています。

まとめ

Railsのルーティングには、get '/help', to: 'static_pages#help' のようにURLを明示的に指定する方法と、get 'static_pages/help' のようにコントローラー名とアクション名をそのまま記述する方法があります。
どちらにも利点はありますが、一般的にはシンプルでわかりやすいURLを使用したほうがユーザーに親切であり、SEOの面でもメリットが大きいです。ぜひアプリケーションの目的に合わせて使い分けてみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?