加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在除主页之外的所有页面上显示导航栏

发布时间:2020-12-17 02:26:01 所属栏目:百科 来源:网络整理
导读:我想展示两个不同的导航栏.当您登录时,将在除主页之外的所有页面上显示一个.而另一个导航栏将显示在我的登录页面上. 我想我可能需要写一个if语句. If (current user is not logged in) or maybe (current user is viewing home page) donavSecond navbar/nav
我想展示两个不同的导航栏.当您登录时,将在除主页之外的所有页面上显示一个.而另一个导航栏将显示在我的登录页面上.

我想我可能需要写一个if语句.

If (current user is not logged in) or maybe (current user is viewing home page) do
<nav>Second navbar</nav>
else
<nav>First navbar</nav>
end

我对rails很新,所以我错了. (是的,我知道不是如何在Ruby中正确编写if语句)

主页位于:

家用/ index.html.erb

解决方法

我通常做以下设置:

>创建部分共享/ _nav_menu.html.erb

里面部分我把逻辑像:

<% if current_user %>
  // nav bar for logged in user
<% else %>
 // nav bar for non logged in users
<% end %>

然后在application.html.erb文件中我像这样呈现部分:

<%= render :partial => 'shared/_nav_menu' if show_menu? %>

在我的application_controller里面,我把这样的逻辑:

def show_menu?
  true
end

helper method: show_menu?

如果我不想显示static_pages的菜单,那么在static_pages_controller中我覆盖了show_menu?返回false的方法.

class StaticPagesController < ApplicationController
  def show_menu? 
    false
  end

  helper_method: show_menu?
end

您不必完全使用此设置,但我喜欢此设置,因为我的导航菜单逻辑部分保持独立.导航菜单所需的所有逻辑都存在于此文件中.

这种方法不会使我的application.html.erb文件膨胀很多if..else.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读