【发布时间】:2011-09-03 16:01:20
【问题描述】:
我对 Rails 很陌生,希望在使用部分实现动态菜单方面得到一些帮助。
截至目前,我的代码如下:
菜单部分:
.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
观点:
html...
= render :partial => 'shared/aboutmenu_nav'
more html...
页面助手:
def @active_page(c)
controller.action_name == c
end
注意:active_page 是我想传递给li 的类,如果用户在相应的页面上。例如,如果用户在 Contact 页面上,则 active_page 类将仅传递给 Contact li 元素。
我尝试了几种解决方案,包括创建多个 CSS 版本并在与页面对应的body 上传递一个类?例如,
%body{:class => @page_name}
然后在 pages_helper 中定义@page_name 如下:
def page_name
@path.parameterize('_') unless @path.blank?
end
这两个版本似乎都不起作用,因为前者 (@active_page) 不会产生任何结果。同样,我无法在 body 标签上分配一个类——当我检查源代码时,body 标签没有任何类。
如果能提供有关如何使用部分实现动态菜单的帮助,我将不胜感激。如果有我没有尝试过的方法,请随时通知我。我真诚地感谢您的所有帮助,我非常感谢您的时间!谢谢!
使用 Kanadada 的解决方案。该页面在应出现样式菜单的位置按字面意思显示以下文本:
<li class="">
<a href="/pages/about">About</a>
</li>
<li class="active_page">
<a href="/pages/careers">Careers</a>
</li>
<li class="">
<a href="/pages/contact">Contact</a>
</li>
如果在源代码中,这段代码会很棒;但是,源似乎无法识别它...相反,源代码显示以下代码:
<li class=""><a href="/pages/about">About</a></li><li class="active_page"><a href="/pages/careers">Careers</a></li><li class=""><a href="/pages/contact">Contact</a></li>
我怀疑这可能与 =top_menu 在 HAML 中的解释方式有关?
【问题讨论】:
标签: html ruby-on-rails css partial