Css 与rails中站点的其他部分相比,我的主页使用不同的导航栏的最佳方式是什么?
我有两个导航栏,一个用于主页,另一个用于站点的其余部分。我不知道如何以一种干爽的方式来做这件事。看起来我想把其余的站点导航栏放在layouts视图中,但我不知道如何从页面中排除布局?主页布局的其余部分与站点的其余部分相同,因此我唯一想排除的是该页面的导航栏,并将其替换为另一个导航栏。链接也将是相同的。因此,导航链接也可以在这两种格式中呈现。使用助手方法 在视图模板中,您可以执行以下操作:Css 与rails中站点的其他部分相比,我的主页使用不同的导航栏的最佳方式是什么?,css,ruby-on-rails,twitter-bootstrap,rest,ruby-on-rails-4,Css,Ruby On Rails,Twitter Bootstrap,Rest,Ruby On Rails 4,我有两个导航栏,一个用于主页,另一个用于站点的其余部分。我不知道如何以一种干爽的方式来做这件事。看起来我想把其余的站点导航栏放在layouts视图中,但我不知道如何从页面中排除布局?主页布局的其余部分与站点的其余部分相同,因此我唯一想排除的是该页面的导航栏,并将其替换为另一个导航栏。链接也将是相同的。因此,导航链接也可以在这两种格式中呈现。使用助手方法 在视图模板中,您可以执行以下操作: <% if content_for? :nav %> <%= content_for
<% if content_for? :nav %>
<%= content_for :nav %>
<% else %>
<%= render 'layouts/nav' %>
<% end %>
然后在您的主页中:
<% content_for :nav, render('layouts/custom_nav') %>
就我个人而言,我更喜欢这种方法——它是声明性的,它让其他人(包括未来的你)明确地知道默认nav可以被覆盖。这个问题有多种解决方案,但我最喜欢的是利用Rails的模板继承。假设您的家庭控制器如下所示:
class HomeController < ApplicationController
end
如果您没有指定它的确切位置(如应用程序/导航栏
),Rails将再次使用模板继承来查找部分内容
因此,首先它将查找主页/导航栏
,然后查找应用程序/导航栏
。如果您只想显示不同的导航栏,而不需要重新定义布局或任何其他内容,则可以利用此功能
因此,您需要将常规导航栏放置在应用程序/\u导航栏
中,将家庭导航栏放置在家庭/\u导航栏
中。然后在布局中呈现导航栏:
render 'navigation_bar'
render 'navigation_bar'