【パーシャル】インスタンス変数の直接参照ではなく、localsで値を渡す
なぜlocalsで渡す必要があるのか
インスタンス変数を直接使うと、Viewと特定のControllerとの依存が強まり、別の箇所で再利用しにくくなるため。
悪い例
Controller (良い例と同じ)
class UsersController < ApplicationController def show @user = User.find(params[:id]) end end
View
# herder内で直接@userを参照 <%= render 'header' %>
良い例
View
# herder内では変数userを参照 <%= render 'header', user: @user %>
上記により、将来的に下記のような再利用ができる
<%= render 'header', user: @owner %>
参照
Rails Best Practice
上記と似たようなコードが記載
Rails Best Practices - Replace instance variable with local variable
Qiita - Rails Best Practices の警告をちゃんと考える
Rails Best Practiceを日本語で解説
Rails Best Practices の警告をちゃんと考える - Qiita
Railsガイド レイアウトとレンダリング 3.4.4 ローカル変数を渡す
localsの使い方を解説
レイアウトとレンダリング | Rails ガイド