我正在寻找一个很好的模式来拥有一个取决于用户状态和当前路径的导航栏。
在我们的应用程序中,我们有一个导航栏,它显示登录用户的用户特定选项(我的个人资料、我的工作等)和来宾用户的来宾特定选项(它是如何工作的、成为会员等) )。
现在我们还有一个演示用户,当他在路径子集上时应该向用户显示特定选项,当他在不同路径上时应该显示来宾特定选项。
我当前的解决方案是存储在数组中的白名单和检查当前路径是否在数组中的函数。
ALLOWED_FOR_DEMO = ['profile', 'demo_jobs', 'jobs']
def allowed_for_demo?
ALLOWED_FOR_DEMO.each { |path|
return true if request.path.include? path
}
return false
end
然后在标题视图中进行检查。
<% if allowed_for_demo? %>
<div class="navbar">
<div class="navbar-inner">
<div class="container">
</div>
</div>
</div>
<% end %>
如果您问我,这种模式非常糟糕,所以如果有人对此有更好的模式,将不胜感激。