gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:33:33 24 4
gpt4 key购买 nike

我想显示两个不同的导航栏。当您登录时,一个将显示在除主页以外的所有页面上。而另一个导航栏将仅显示在我的登录页面上。

我在想我可能需要写一个 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 语句的方法)

主页位于:

home/index.html.erb

最佳答案

我通常会进行以下设置:

  • 创建部分shared/_nav_menu.html.erb

在 partial 里面我放了这样的逻辑:

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

然后在 application.html.erb 文件中渲染 partial 如下:

<%= 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

您不必完全使用此设置,但我喜欢此设置,因为我的 nav menu 逻辑部分地保持独立。 nav menu 所需的所有逻辑都在这个文件中。

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

关于ruby-on-rails - 在除主页之外的所有页面上显示导航栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38982330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com