コントローラーでパラメータを送る際に主に利用される仕組みのこと。
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メソッドで許可して受け取る値を制限
上記をすることによってデータベースを不正に書き換えられる可能性を防ぐ。 (セキュリティーの意味でも大事❗️)
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}を用いる。
たとえば、あとから「作成しました。」と、まるをつけてくださいと修正依頼が入っても
一箇所直すだけで全ての変更ができる。
パーシャルファイルを使う判断基準