当你只需要返回一行html时,装饰者很棒!
但是,我不知道如何有条件地呈现复杂的,多行的HTML部分,例如:
<% if current_user == @user || current_user.is_admin? %>
<h3> Private Info: </h3> <h4> - Only <%= @user.is_owner? %> can view this information </h4>
<p><strong>First Name:</strong> <%= @user.decorate_first_name %> </p>
<p><strong>Last Name:</strong> <%= @user.decorate_last_name %></p>
<p><strong>Email:</strong> <%= @user.decorate_email %> </p>
<% end %>
正如你所看到的,我将它包装在if语句中,这正是我想用装饰器复制的,但我不确定如何。
我应该创建一个部分并使用装饰器渲染部分吗?
应用程序/装饰/ user_decorator.rb:
def decorate_private_info
h.render 'private_info' if current_user? || admin?
end