Draperで最近のRailscastsのエピソードを見た後、Decoratorパターンを利用するために自分のもののいくつかをリファクタリングすることに挑戦したいと思いました。そして、すぐに自分自身を混乱させることができました。
アプリケーションレイアウトファイルに、ログインしているかどうかに応じてログインリンクまたはログアウトリンクを提供するビューロジックがあります。
<% if signed_in? %>
<li><%= link_to "Sign out", signout_path, :method => :delete %></li>
<% else %>
<li><%= link_to "Sign in", signin_path %></li>
<% end %>
そのロジックをデコレータに移動するための完璧な候補のようです。しかし、これはアプリ全体のビューロジックなので、何を飾っていますか?アプリケーションデコレータを作成したいと思いますが、アプリデコレータオブジェクトをインスタンス化する方法と、それを参照する方法がわかりません。
Railscastsのエピソードでは、アプリデコレーターを作成する方法を示していますが、特定のコントローラー(つまり、アプリコントローラーではない)内から参照されています。サイトのすべてのページから装飾されたビューロジックにアクセスできるように、どのように構造化するのですか?