基于多个条件渲染部分的良好做法?
Good practice for rendering partials based on multiple conditions?
我需要能够根据用户权限呈现多个不同的布局。我的群组有一个所有者和许多成员。我还有大量用户,他们可能在也可能不在一个组中。如果我有一个群组,如何向群组所有者、群组成员或非成员用户呈现不同的布局?
我不想为此使用授权 gem
我在想这样的事情:
<% if current_user == @group.owner %>
<% render partial_1 %>
<% elsif current_user == @group.member && != @group.owner %>
<% render partial_2 %>
<% else %>
<%render partial %>
<% end %>
这是无效的吗?效率低下? best/better 有这方面的实践吗?
基本上没问题,您不需要在检查用户是否是所有者后检查他们是否是所有者,并且假设用户可以有很多组并且组可以有很多成员您需要检查包含一个或另一个,而不是 group.member
(@group.members.include?(current_user)
会起作用,但我在下面建议相反,两者都可以。
<% if current_user == @group.owner %>
<% render partial_1 %>
<% elsif current_user.groups.include?(@group) %>
<% render partial_2 %>
<% else %>
<% render partial %>
<% end %>
我需要能够根据用户权限呈现多个不同的布局。我的群组有一个所有者和许多成员。我还有大量用户,他们可能在也可能不在一个组中。如果我有一个群组,如何向群组所有者、群组成员或非成员用户呈现不同的布局?
我不想为此使用授权 gem
我在想这样的事情:
<% if current_user == @group.owner %>
<% render partial_1 %>
<% elsif current_user == @group.member && != @group.owner %>
<% render partial_2 %>
<% else %>
<%render partial %>
<% end %>
这是无效的吗?效率低下? best/better 有这方面的实践吗?
基本上没问题,您不需要在检查用户是否是所有者后检查他们是否是所有者,并且假设用户可以有很多组并且组可以有很多成员您需要检查包含一个或另一个,而不是 group.member
(@group.members.include?(current_user)
会起作用,但我在下面建议相反,两者都可以。
<% if current_user == @group.owner %>
<% render partial_1 %>
<% elsif current_user.groups.include?(@group) %>
<% render partial_2 %>
<% else %>
<% render partial %>
<% end %>