これから作っていく簡単なWebアプリの作成メモ(自分の備忘)です。
自分用なのであまり凝りすぎないように書いていきたい。
##今回やったこと
###スケジュールコントローラーほかの生成
前回作成したSchedule
モデルに対応するコントローラーやビューを作成していく。
あまりまとまった作業時間をとれていないので、ひとまず見た目や機能は気にしないで動くものを作っていこう。
(でも思いつきや寄り道は大事にしたいジレンマ、、、)
$ bin/rails g controller Schedules index show new create edit update delete
生成されたルーティングを以下のように書き直す(個人の好みの問題)。
Rails.application.routes.draw do
# ルート
root "users#index"
# Users
resources :users
# Schedules
resources :schedules
end
Users#index
のビューを作った時とほぼ同じものをコピペで作成した。
(以前views/users/index.html.erb
を作った際にはif文の条件を@users.empty?
としていたが、何か新しいアクションを追加したときにNoMethodError
でシステムエラーを起こしたくないので@schedules.blank?
として@schedules
がnil
になってしまうことに備えた。)
(本当は業務アプリでは上記のような「想定外を想定してゆるく作る」のはNGだと思うが、今回は遊びの面が強いのでなるべく作りの甘さが出ても動いてくれるようにしていきたい)
<h1>チームの予定一覧</h1>
<% if @schedules.blank? %>
<div><%= "表示できる予定がありません。" %></div>
<% else %>
<div class="table_card">
<table align="center">
<thead>
<tr>
<th>件名</th>
<th>予定日</th>
</tr>
</thead>
<tbody>
<% @schedules.each do |lst| %>
<tr>
<td><%= lst.title %></td>
<td><%= lst.date_of %></td>
</tr>
<% end %>
</tbody>
</table>
</div>
<% end %>
コントローラーも以下のように追記した。
def index
@schedules = Schedule.all
end
ぎりぎり動く程度の実装はできたので、動作を確認する。
以下は動作確認のためのroot
変更。
# ルート
# root "users#index"
root "schedules#index"
上記によって、Railsサーバーに最初に接続したときのページがschedules/index.html.erb
になる。
Rails6のデフォルトで、development環境ではプロファイラが表示される。
画面ハードコピーを取得する際に邪魔だったので、以下の記事を参考にAlt+p
で非表示にした。
rails viewのプロファイラを非表示
他にも以下の記事のように、Railsサーバー起動時にデフォルトで表示されないようにできるらしい。
rack-mini-profilerの計測結果がWebページに表示しないようにする
ふだんメインで使っているのはRails5.2.5なのでrack-mini-profilerを意識することがなかったが、かなり便利そうなので常時非表示にするのは惜しいと思いました。
そのため、rack-mini-profilerのREADMEを参考に、以下のようにして表示位置を右下にしてみた。
require "active_support/core_ext/integer/time"
Rails.application.configure do
(中略)
# rack-mini-profilerを右下に置く
Rack::MiniProfiler.config.position = 'bottom-right'
end
気に入ったので、しばらくこれでいってみようと思います。
(development.rbに記述した内容が反映されるのは、Railsサーバーの再起動時という点に注意)
今日も短いけどここまで。
次回の記事>>