给定一个 Rails 3 应用程序,其菜单如下:
<ul>
<li>Home</li>
<li>Books</li>
<li>Pages</li>
</ul>
Rails 中让应用程序知道面包屑的智能方法是什么,或者何时使其中一个 LI 显示为:
<li class="active">Books</li>
谢谢
最佳答案
我不确定是否能为您提供一个聪明的方法,但总比没有好......
如果您的菜单有一些链接 - 它不在您的示例中,但我认为真正的菜单应该有链接,而不仅仅是项目。例如,HAML 中类似这样的内容:(我使用 HAML 因为在文本区域中编写 ERB 简直就是 hell )
%ul
%li= link_to "Home", :controller => "home"
%li= link_to "Books", :controller => "books"
%li= link_to "Pages", :controller => "pages"
然后这个助手(从我的项目粘贴)应该会派上用场:
#
# Shows link with style "current" in case when the target controller is same as
# current
# beware: this helper has some limitation - it only accepts hash as URL parameter
#
def menu_link_to(title, url, html_options = {})
unless url.is_a?(Hash) and url[:controller]
raise "URL parameter has to be Hash and :controller has to be specified"
end
if url[:controller] == controller.controller_path
html_options[:class] = "current"
end
link_to(title, url, html_options)
end
使用这个助手,您可以将上面代码中的“link_to”替换为“menu_link_to”,就是这样!
关于ruby-on-rails - Rail3 - 显示菜单和添加事件样式类的智能方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3800157/