ruby-on-rails - Rail3 - 显示菜单和添加事件样式类的智能方式?

标签 ruby-on-rails ruby-on-rails-3

给定一个 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/

相关文章:

ruby-on-rails - 在带有 Postgresql 后端的 Heroku 上的 Rails 应用程序中使用 COPY FROM

ruby-on-rails - 设计:登录失败,如何调试?

ruby - 这是将通知推送到另一个网络服务器的正确方法

ruby-on-rails - 骨架应用程序中rails 3.2.0.rc1 stylesheet_link_tag的ArgumentError

mysql - 在 ActiveRecord 模型的所有查询中更改 FROM

javascript - 如何在 js.haml 文件中写入外部 .js 文件的内容 (Ruby on Rails)

ruby-on-rails - (Rails) Paypal 支付与 Braintree v.zero SDK

ruby-on-rails-3 - 想要在 Rails 上使用 Net::Ftp 移动整个文件夹

ruby-on-rails-3 - 向Rails和Devise注册后如何添加回调

ruby-on-rails - after_create和after_save顺序