Как я могу использовать декоратор приложения для логики просмотра всего сайта?

#ruby-on-rails #decorator #railscasts #draper

#ruby-on-rails #декоратор #railscasts #draper

Вопрос:

После просмотра недавнего эпизода Railscasts на Draper я подумал, что мне стоит заняться рефакторингом некоторых своих материалов, чтобы использовать шаблон декоратора. А затем мгновенно сумел запутать себя.

У меня есть логика просмотра в моем файле макета приложения, которая предоставляет ссылки для входа или выхода из системы в зависимости от того, вошли ли вы в систему (дождитесь ее) или нет:

 <% if signed_in? %>
  <li><%= link_to "Sign out", signout_path, :method => :delete %></li>
<% else %>
  <li><%= link_to "Sign in", signin_path %></li>
<% end %>
  

Кажется идеальным кандидатом для переноса этой логики в декоратор. Но это часть логики просмотра для всего приложения, так что я украшаю? Я предполагаю, что я хочу создать декоратор приложения, но мне неясно, как создать экземпляр объекта декоратора приложения и как ссылаться на него.

В эпизоде Railscasts показано, как создать декоратор приложения, но на него ссылаются из определенного контроллера (т. Е. Не Из контроллера приложения). Как мне структурировать вещи, чтобы я мог получить доступ к оформленной логике просмотра с каждой страницы сайта?

Комментарии:

1. Можно ли с уверенностью предположить, что у вас есть модель пользователя (или учетной записи, участника и т. Д.)? Если это так, я думаю, что декоратор, который вы имеете в виду, лучше всего воспринимается как декоратор для вашей пользовательской модели.

2. Спасибо, Макс, я думаю, ты попал в точку. Приветствия