我在导航菜单中有一些静态页面.我想在当前显示的项目中添加类似"当前"的类.
我这样做的方法是添加大量的辅助方法(每个项目一个)来检查控制器和操作.
def current_root_class
'class="current"' if controller_name == "homepage" && action_name == "index"
end
<ul>
<li <%= current_root_class %>><%= link_to "Home", root_path %>
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢??我目前的方式是如此愚蠢......
在引导程序导航栏中.您可以通过添加类来获得单击按钮的效果active.当然,我想在我的网页上使用它.例如,如果我在关于我们的页面上,我想点击关于我们的按钮.
最好的方法是什么?我打算去每个页面,在底部有一个jQuery函数将类添加active到它.有没有更好的办法?
我是rails的新手,想要使用partials实现动态菜单.
截至目前,我的代码如下:
菜单部分:
.three.columns
%ul#nav
%li{:class => @active_page=="about" ? "active_page" : ""}
%a{:href => "../pages/about"} About
%li{:class => @active_page=="careers" ? "active_page" : ""}
%a{:href => "../pages/careers"} Careers
%li{:class => @active_page=="contact" ? "active_page" : ""}
%a{:href => "../pages/contact"} Contact
Run Code Online (Sandbox Code Playgroud)
风景:
html...
= render :partial => 'shared/aboutmenu_nav'
more html...
Run Code Online (Sandbox Code Playgroud)
页面助手:
def @active_page(c)
controller.action_name == c
end
Run Code Online (Sandbox Code Playgroud)
注意:如果用户在相应的页面上active_page,我想要传递给的类li.例如,如果用户位于"联系"页面上,则active_page类将仅传递给Contact li元素.
我尝试了几种解决方案,包括创建多个CSS版本并body在页面上传递一个类?例如,
%body{:class => @page_name}
Run Code Online (Sandbox Code Playgroud)
然后在pages_helper中定义@page_name,如下所示:
def page_name
@path.parameterize('_') unless @path.blank?
end
Run Code Online (Sandbox Code Playgroud)
这些版本似乎都不起作用,因为前者(@active_page)不会产生任何结果.同样,我无法在body标签上分配一个类 - 当我检查源代码时,body标签没有任何类.
我很感激有关如何使用partials实现动态菜单的任何帮助.如果有一种我没试过的方法,请随时通知我.我真诚地感谢你的帮助,我非常感谢你的时间!谢谢!
使用Kanadada的解决方案.该页面按字面显示应显示样式菜单的以下文本:
<li class=""> …Run Code Online (Sandbox Code Playgroud)