ストロングパラメーター

コントローラーでパラメータを送る際に主に利用される仕組みのこと。

boards_controller.rb

private

  def board_params
    params.require(:board).permit(:title, :body)
  end

#上記でparams[:board][:title]やparams[:board][:body]は受け取ること
#requireでboardを指定しているからで
#逆にカラムもtitleやbodyをpermitで指定しているため、それ以外は受け取れないのです。
# requireというメソッドでPOSTで受け取る値のキー設定
# permitメソッドで許可して受け取る値を制限

上記をすることによってデータベースを不正に書き換えられる可能性を防ぐ。 (セキュリティーの意味でも大事❗️)

form_withのブロック中でlabelに関して

boards/_form.html.erb

# BAD f.labelのname属性を、name:で個別に指定している

<%= form_with model: board, local: true do |f| %>
  <div class="form-group">
    <%= f.label :title, name: 'title' %>
    <%= f.text_field :title, class: 'form-control' %>
  </div>

# GOOD f.labelのname属性を、form_withの自動付与に任せている

<%= form_with model: board, local: true do |f| %>
  <div class="form-group">
    <%= f.label :title %>
    <%= f.text_field :title, class: 'form-control' %>
  </div>

補足

フラッシュメッセージ部分の%{item}に関して

views/ja.yml

message:
      created: "%{item}を作成しました。"
      not_created: "%{item}を作成できませんでした。"

"〜を作成しました"というメッセージは汎用的なので いろいろなケースに使い回せるように%{item}を用いる。

たとえば、あとから「作成しました。」と、まるをつけてくださいと修正依頼が入っても

一箇所直すだけで全ての変更ができる。

パーシャルファイルを使う判断基準