Railsの勉強をスタートしてまだ少ししか経ってないけど、勝手にファイルがいっぱい作成されたりする機能に面食らっているので自分のためにまとめる。
参考:パーフェクトRuby on Rails【増補改訂版】:書籍案内|技術評論社
環境:macOS Catalina / Ruby 2.7.1 / Rails 6.0.3
ルーティング情報を確認する
例:タスク(to do)管理をするアプリケーション
- Taskモデル
- tasksテーブル
- カラム名:content text型
ブラウザで
http://localhost:3000/rails/info/routesにアクセスする。
コマンドで
% bin/rails routes
を実行。
解説
例:POST /tasks(.:format) tasks#create
意味:HTTPのPOSTメソッドで/tasksへリクエストを送った場合、tasksコントローラのcreateメソッドが実行される
(.:format) はアクセスしたURLの拡張子(.jsonや.csvなど)によってレスポンスを変化させるために利用する。
Prefixとは?
ルーティング情報の一番左のPrefixは、例えば以下の黄色い線のnew_task GET...
の場合、
一覧のページの最後の行のリンクで使われている。
app/views/tasks/index.html.erb
↓
<p id="notice"><%= notice %></p> <h1>Tasks</h1> <table> <thead> <tr> <th>Content</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @tasks.each do |task| %> <tr> <td><%= task.content %></td> <td><%= link_to 'Show', task %></td> <td><%= link_to 'Edit', edit_task_path(task) %></td> <td><%= link_to 'Destroy', task, method: :delete, data: { confirm: 'Are you sure?' } %></td> </tr> <% end %> </tbody> </table> <br> <%= link_to 'New Task', new_task_path %> # ←ここ
link_to
とはaタグを生成するためのヘルパーメソッドである。第一引数はリンクの文字列になり、第二引数以降でリンク先URLなどを指定する。
この第二引数にPrefixの値を利用することでURL文字列を生成することができる。つまり、
<a href="/tasks/new">New Task</a>
というタグを生成する。
ルーティング情報の定義
ルーティングの設定はconfig/routes.rb
に記述されている↓
Rails.application.routes.draw do resources :tasks # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end
実際にtasksモデルに関するCRUD操作を定義しているのはresources :tasks
の部分。
updateにはPATCHとPUTの2つがある
PATCH /tasks/:id(.:format) tasks#update PUT /tasks/:id(.:format) tasks#update
もともとPUTだけだったのが、REST的にはPATCHが正しいということで途中で追加された。どちらも残しておけば良い。