Rails 日記App制作 ~完成だ!!~
コードを更新して、index 一覧から各投稿の詳細を表示しようとする【1回目の時だけ】
エラーとなる。謎。
以下エラー画面の抜粋
直すところ
### ArgumentError in Posts#show
##### First argument in form cannot contain nil or be empty
難しい。。これとか参考になりそう
qiita.com
あとで調べよshowアクションの記述エラー。初回だけ
## Action Controller: Exception caught### ArgumentError in Posts#show
##### First argument in form cannot contain nil or be empty
<div class="p-comment__formBox"> <p class="p-comment__formTitle">コメント記入</p> <%= form_for comment do |f| %> <%= f.hidden_field :post_id %> <div class="form-group"> <%= f.label :name, '名前' %>
Trace of template inclusion: app/views/posts/show.html.erb
空の投稿時のvalidationメッセージが二重で出てしまう
viewファイルを見たら、繰り返し処理で直接表示する記述と、renderで呼び出す記述の二つがあったタグ機能を「投稿編集画面」からも追加できるようにする
現在は「新規投稿時」しかタグをつけれない難しい。。これとか参考になりそう
qiita.com
DBのプロパティからフィルタリングできるようにする
投稿者名とか、投稿日時とかDBのテーブルの中身を全削除して、作り直す
現在作成済みのtableの一覧を、Active Recordで確認する
- 作成済みのModelを確認する
作成したModelを表示
# 自分のユースケース的にはこれが良かった。全テーブル名を取得して、 tables = ActiveRecord::Base.connection.tables
# こんな感じでmapしてテーブル名からモデルクラスをたどる。 tables.map(&:classify).map(&:safe_constantize).compact
rails consoleでModelを指定し、全レコードを削除
$ rails console> Post[モデル名].delete_all
rails consoleでデータを全て削除するよ!
rails consoleを起動して、全てのデータを削除(destroy)する時
User.find(1).destroy
User.find(2).destroy
User.find(3).destroy
のように一々findで消したいデータのIDを指定して削除していた。とても面倒だし時間がかかる(例えばデータが莫大な数あったら、その分だけ入力して…という作業を繰り返す必要がある。)
そこで、全てのデータを一気に削除する方法を調べてみた。
User.delete_all
おおお、簡単。調べる前にUser.all.destroyで削除出来るのかな、と思って試してみたけどエラー。全てのデータを削除する時はdestroyではなく、deleteになるのね。
最後に新規作成したいデータをseeds.rbにかいて流し込む
$ rails db:seed