【问题标题】:Rails 5: show link from navigation partial if user has particular roleRails 5:如果用户具有特定角色,则从导航部分显示链接
【发布时间】:2017-02-16 20:51:01
【问题描述】:

我的应用需要根据用户角色显示/隐藏部分链接。

models/roles.rb 我有:

class Role < ApplicationRecord
  belongs_to :user, optional: true
  accepts_nested_attributes_for :user

  enum general: { seller: 1, buyer: 2, seller_buyer: 3}, _suffix: true
  enum dashboard: { denied: 0, viewer: 1, editer: 2, creater: 3, deleter: 4}, _suffix: true

controllers/dashboards_controller.rb 我有:

def dashboard_1
@roles = current_user.roles
  if @roles.any? { |role| role.creater_dashboard? || role.deleter_dashboard? }
    @creater_deleter = true
  elsif @roles.any? { |role| role.viewer_dashboard? }
    @viewer = true
  else
    redirect_to users_path
  end

layouts/application.html.erb 我有这个:

<!-- Navigation -->
     <%= render 'layouts/navigation' %>

在部分 layouts/_navigation.html.erb 我有这个:

<li class="<%= is_active_controller('dashboards') %>">
   <%= link_to dashboard_path do %>
   <i class="fa fa-th-large"></i> <span class="nav-label" data-i18n="nav.dashboard">Dashboard</span>
   <% end %>
<% end %>
 </li>

<li class="<%= is_active_controller('campaigns') %>">
   <%= link_to campaigns_path do %>
   <i class="fa fa-clipboard"></i> <span class="nav-label" data-i18n="nav.campaigns">Campaigns</span>
   <% end %>
 </li>
... #other links to different parts of app

如果用户是@creator_deleter,如何部分显示“仪表板”链接? 注意:但是我需要向所有用户显示“广告系列”链接。我发现我可能从此时开始使用 AJAX...非常感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails ruby views partial-views partial


    【解决方案1】:

    您很可能需要将 @creator_deleter 实例变量作为局部变量传递给局部变量。

    <!-- Navigation -->
        <%= render 'layouts/navigation', locals: { creator_deleter: @creator_deleter } %>
    

    然后你可以在你的部分里面检查它

    <li class="<%= is_active_controller('dashboards') %>">
    <% if creator_deleter %>
      <%= link_to dashboard_path do %>
        <i class="fa fa-th-large"></i> <span class="nav-label" data-i18n="nav.dashboard">Dashboard</span>
      <% end %>
    <% end %>
    </li>
    

    【讨论】:

    • 不幸的是,在 layouts/_navigation.html.erb 中无法正常工作会出现此错误:未定义的局部变量或方法 `creator_deleter' 似乎该实例变量不会以这种方式传递给部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多