私はRailsのDRYコンセプトについて多くのことを学んでいますので、ここに私の質問です:Locations
のような、常に様々なオブジェクトをロードする必要がある私のアプリケーションには固定サイドバーがあります。私index
ページに関連したコントローラで グローバル変数はどこにありますか?
controllers/pages_controller.rb
に私は
@locations
ロードしています:私は場所を選択してロードすると、しかし、私のナビゲーションメニュー(サイドバー)のために正常に動作します
@company = current_user.company
@locations = if @company
current_user.company.locations.order(:name)
else
[]
end
別のコントローラ(この場合はlocations/show.html.erb
)から代理されたビューmy @locations
変数は検出されません。
確かに、すべての(私は私のlocations_controller.rb
ファイルにshow
方法にそれを追加することができ、それは、私は、サイドバーのナビゲーションメニューに依存しているすべての単一のコントローラメソッドで上記のコードを配置する必要があるだろう考えると非常に乾燥していませんそれらは固定されているので)。
これを一度実行して、すべてのコントローラでそれを行う必要はありませんDRY方法は何ですか?
before_action
を使用することができます**ただ、注意:** Rails 5ではbefore_filterが廃止されたので、代わりに 'before_action'コールバックを使用します。 – bntzio