基于多种条件渲染局部的良好实践?

时间:2016-04-06 21:41:50

标签: ruby-on-rails ruby-on-rails-4 rendering erb

我需要能够根据用户权限呈现多个不同的布局。我有一个拥有一个所有者和许多成员的组。我也有大量用户,他们可能在一个小组中,也可能不在小组中。如果我有一个组,如何为组所有者,组成员或非成员用户呈现不同的布局?

我不想为此

使用授权gem

我在想这样的事情:

<% if current_user == @group.owner %>
  <% render partial_1 %>
<% elsif current_user == @group.member && != @group.owner %>
  <% render partial_2 %>
<% else %>
  <%render partial %>
<% end %>

这是无效的吗?效率低下?对此有最佳/更好的做法吗?

1 个答案:

答案 0 :(得分:1)

基本上没问题,你不需要检查用户是否不是主人,并且假设用户可以有很多组,并且组可以有很多成员,你需要检查是否包含一个或者另一个,而不是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 %>