【问题标题】:Good practice for rendering partials based on multiple conditions?基于多个条件渲染局部的良好做法?
【发布时间】:2016-04-06 21:41:49
【问题描述】:

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

我不想为此使用授权 gem

我在想这样的事情:

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

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

【问题讨论】:

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


    【解决方案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 %>
    

    【讨论】:

    • 太棒了!正是我想要的。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 1970-01-01
    • 2020-06-10
    相关资源
    最近更新 更多