30DAYSトライアル4th

30DAYSトライアル4th(Rails)のまとめ【DAY29(仮)】

30DAYSトライアル4th(Rails)DAY28(仮)の課題は「ドットインストール Rails入門コース #14〜#28」です。
※(仮)としているのは東京フリーランスの記事ではDAY20までしか書かれていないので、その先を勝手に自分で決めて進めているからです。

Progateでやった内容と重複するところもあるので、新たなことが出てきた箇所だけに絞ります。

30DAYSトライアル4th(Rails)DAY29(仮)の学習内容

ドットインストールのRailsコースの残りをこなしていきます。

30DAYSトライアル4th(Rails)DAY28(仮)の学習内容
  • #14 記事を追加できるようにしよう
  • #15 新規作成フォームを作ろう
  • #16 Strong Parametersを設定しよう
  • #17 バリデーションを設定しよう
  • #18 エラーメッセージを表示しよう
  • #19 編集フォームを作ろう
  • #20 記事を更新してみよう (
  • #21 Partialで共通部品を作ろう
  • #22 記事を削除できるようにしよう
  • #23 コメントモデルを作っていこう
  • #24 コメント追加フォームを作ろう (
  • #25 コメントを保存しよう
  • #26 コメントの一覧を表示しよう
  • #27 コメントを削除できるようにしよう
  • #28 アプリを完成させていこう

#15 新規作成フォームを作ろう

formは「form_forヘルパー(メソッド)」で作成することができます。

 

現時点ではこういう理解ですが、この「form_forヘルパー」は色んな人が混乱しているみたいなので、理解を深めるために後々自分なりにもうよっとまとめてみたいと思います。
■今回参考にみてみたURL
Railsのform_forの使い方が リファレンス見てもいまいちわからなかったので 俺式に全力で整理してみた

コントローラで送信されてきた値をそのまま表示する

コントローラで下記のように記述すると送信されてきた値をそのまま表示することができmる。

#16 Strong Parametersを設定しよう

Railsで悪意のあるデータが挿入されることを防ぐために、formなどから送信されてきたデータの形式を検証しなければならない仕組みになっているので、データの検証を行わなければエラーとなります。

この仕組みはStrong Parametersと呼ばれています。

Strong Parametersのチェックは以下のように行い、privateメソッドにまとめることが多い。

#21 Partialで共通部品を作ろう

新規作成フォームと更新フォームなどがある場合、フォーム部分は共通である場合が多いです。そういった時はPartialという仕組みを使用するこtで、フォーム部分を共通化することができる。

Partialは「app/views/該当コンロローラ/」の中にファイルを作成します。ファイル名のルールとして頭文字に「_」をつけて「_共通部分名.html.erb」というふうに作成する。

作成したPartialのファイルに共通部分のHTMLを記述し、呼び出し元には以下のように記述します。

#23 コメントモデルを作っていこう

モデルを作成する時に「モデル名:refereces」を付加すると、該当のモデルとの紐付きを設定できる。

上記のコマンドを実行してモデルを作成すると、作成されたモデルは以下のようになる。

紐付く先のモデルには手動でき以下の記述を追加する。

#28 アプリを完成させていこう

「has_many」を定義したモデルに「dependent: destroy」を記述すると、「has_many」を定義したモデルのレコードが削除された時に、関連先のモデルのレコードも併せて削除してくれる。

まとめ

Progateで学習した内容と重複しているところも多々あるので、2日間でざっと流しましたが、Progateでは学習してない内容や異なる記述方法について学習することができました。

というか色々ありすぎて消化でききれていないので、今後はRailsチュートリアルをやりながら一つ一つ噛み砕いていきたいと思います。

ABOUT ME
Jyu2
【PC1台で稼ぐブロガー兼Webエンジニアを目指し中】IT情報やWebサービス、アプリなどの情報を発信/SIerで10年以上勤務→ストレスMAXで休職中→ブログとWebの学習を行い脱サラ計画中/ #30DAYSトライアル 1st完了→2nd実施中 / 日々の学習内容をブログにアウトプット / まずは月収5万円を目指す