はじめに
最初Wi-Fiルータが頭に浮かびました。
Railsのルーティング、アクション周りにかなり苦戦したので備忘も含め書きたいと思います。
Railsで開発する流れ
まず、Railsでサイトを作る場合は下記の流れで作業するといいかもと思いました。
(これが一般的?)
- 機能の整理: 実装する機能を決める。
- データベース設計: モデルとカラムを決める。
- ルーティング設定: 必要なURLを設定。
- コントローラ作成: 各アクションを実装。
- ビュー作成: 必要な画面を作る。
-
動作確認: ブラウザで動作を確認し、修正する。
今回該当するのは、3,4番のルーティング設定とコントローラ作成が主になります。
ルーティング設定
ルーティングとはサイト内のURLとアクションを結びつける役割を持ちます。
config/routes.rbに記述します。
Rails.application.routes.draw do
get "articles", to: "articles#index"
end
class ArticlesController < ApplicationController
def index
@articles = Article.all
end
end
URL名を叩いたらarticlesコントローラのindexアクションを実行するよという意味になります。
ちなみにコントローラはアクションを記述する場所です。
ゲームのコントローラと同じようにコントローラで→↓↘︎ + Pのコマンド命令を出し、昇竜拳というアクションが実行されるイメージで自分は考えてました。
便利な記述
root
localhost:3000
にアクセスした時Railsのロゴが最初に出ますが、開いた瞬間のホーム画面を自分で設定できます。
ロゴとはこれでおさらばです。
Rails.application.routes.draw do
root "articles#index"
end
rootを設定するとアクセスした瞬間にindexアクションが実行されます。
as
asはルーティングにルーティングヘルパーを付与できます。
下記のように記述し、好きな名前をつけられます。
ヘルパーと付くので他の人から見ても助けになるようわかりやすい命名が大切
Rails.application.routes.draw do
get "articles", to: "articles#index", as: "home"
end
ルーティングヘルパーを付与してからlocalhost:3000/rails/info/routes
を確認すると
Helper列にhome_path
が追加されていると思います。
これでビューファイルに記述する際簡単に記述できます。
resourcesについて
resourcesは下記のように記述するだけでルーティングを勝手に組んでくれます。
便利すぎてとりあえずこれ書けばできてしまいますが、ルーティングに関してちゃんと理解していないと絶対にエラーが発生します。(体験談)
Rails.application.routes.draw do
root "articles#index"
resources :articles
end
1つずつ手書きでルーティング設定しておくと理解が深まると考えたので最初のうちは使わないほうがいいなと思いました。
余談 HTTPメソッドについて
HTTPメソッドとは
クライアントとサーバー間の通信でどのようなリクエストを行うか示すものです。
メソッド | 役割 |
---|---|
GET | データを取得する |
POST | データ作成をする |
PATCH/PUT | データを更新する |
DELETE | データを削除する |
自分はずっとDELETEがしたかったのにGETリクエストが飛び続けて3時間ほど悩みネットの海を彷徨いました。
下記がGETリクエストの飛び続けたコードです。
<%= link_to "Delete Article", article_path(@article), method: :delete%>
1つ辿り着いたのが、rails-ujs
というライブラリを使う方法です。
しかしこれを使うやり方は古いらしく現在turbo
というものが推奨されているみたいです。
(教えていただきました持つべきものは仲間)
修正したコードがこちら
<%= 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のルーティングは最初は難しいけど、仕組みを理解すれば効率よく作業を進められるようになります!