Why not login to Qiita and try out its useful features?

We'll deliver articles that match you.

You can read useful information later.

2
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?

【Ruby on Rails】ルーティングって何?

Last updated at Posted at 2024-12-01

はじめに

最初Wi-Fiルータが頭に浮かびました。
Railsのルーティング、アクション周りにかなり苦戦したので備忘も含め書きたいと思います。

Railsで開発する流れ

まず、Railsでサイトを作る場合は下記の流れで作業するといいかもと思いました。
(これが一般的?)

  1. 機能の整理: 実装する機能を決める。
  2. データベース設計: モデルとカラムを決める。
  3. ルーティング設定: 必要なURLを設定。
  4. コントローラ作成: 各アクションを実装。
  5. ビュー作成: 必要な画面を作る。
  6. 動作確認: ブラウザで動作を確認し、修正する。
    今回該当するのは、3,4番のルーティング設定とコントローラ作成が主になります。

ルーティング設定

ルーティングとはサイト内のURLとアクションを結びつける役割を持ちます。
config/routes.rbに記述します。

routes.rb
Rails.application.routes.draw do
 get "articles", to: "articles#index"
end
articles_controller.rb
class ArticlesController < ApplicationController
  def index
    @articles = Article.all
  end
end

URL名を叩いたらarticlesコントローラindexアクションを実行するよという意味になります。
ちなみにコントローラはアクションを記述する場所です。
ゲームのコントローラと同じようにコントローラで→↓↘︎ + Pのコマンド命令を出し、昇竜拳というアクションが実行されるイメージで自分は考えてました。

便利な記述

root

localhost:3000にアクセスした時Railsのロゴが最初に出ますが、開いた瞬間のホーム画面を自分で設定できます。
ロゴとはこれでおさらばです。

routes.rb
Rails.application.routes.draw do
   root "articles#index"
end

rootを設定するとアクセスした瞬間にindexアクションが実行されます。

as

asはルーティングにルーティングヘルパーを付与できます。
下記のように記述し、好きな名前をつけられます。
ヘルパーと付くので他の人から見ても助けになるようわかりやすい命名が大切

routes.rb
Rails.application.routes.draw do
get "articles", to: "articles#index", as: "home"
end 

ルーティングヘルパーを付与してからlocalhost:3000/rails/info/routesを確認すると
Helper列にhome_pathが追加されていると思います。
これでビューファイルに記述する際簡単に記述できます。

resourcesについて

resourcesは下記のように記述するだけでルーティングを勝手に組んでくれます。
便利すぎてとりあえずこれ書けばできてしまいますが、ルーティングに関してちゃんと理解していないと絶対にエラーが発生します。(体験談)

routes.rb
Rails.application.routes.draw do
root "articles#index"
resources :articles
end

1つずつ手書きでルーティング設定しておくと理解が深まると考えたので最初のうちは使わないほうがいいなと思いました。

余談 HTTPメソッドについて

HTTPメソッドとは

クライアントとサーバー間の通信でどのようなリクエストを行うか示すものです。

メソッド 役割
GET データを取得する
POST データ作成をする
PATCH/PUT データを更新する
DELETE データを削除する

自分はずっとDELETEがしたかったのにGETリクエストが飛び続けて3時間ほど悩みネットの海を彷徨いました。
下記がGETリクエストの飛び続けたコードです。

show.html.erb
<%= link_to "Delete Article", article_path(@article), method: :delete%> 

1つ辿り着いたのが、rails-ujsというライブラリを使う方法です。
しかしこれを使うやり方は古いらしく現在turboというものが推奨されているみたいです。
(教えていただきました持つべきものは仲間)
修正したコードがこちら

show.html.erb
<%= link_to "Delete Article", article_path(@article), data: { turbo_method: "delete" } %>

無事DELETEを飛ばすことができました。

まとめ

  • ルーティング は、URLとアクションを結びつける役割を持つ重要な設定。
  • root を使えばホームページを簡単に指定できる。
  • as でヘルパーを付与し、ルーティングをわかりやすく便利に。
  • resources は自動的にルーティングを生成してくれるが、最初のうちは手書きで理解を深めるのがおすすめ。
  • HTTPメソッドは、GET/POST/PATCH/DELETE の役割を正しく理解することが大切。
  • turbo_method を使うことで、削除(DELETE)がうまく動作するように。

Railsのルーティングは最初は難しいけど、仕組みを理解すれば効率よく作業を進められるようになります!

2
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
2
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?