Rails - 选择当前菜单项

Jes*_*sen 3 ruby-on-rails

我已经做了一个小助手class="selected".它主要current_page?用于调查当前路径是否是当前菜单项,并选择它.

module MenuHelper
  #renders menu items and emphasizes current menu item
  def topmenu
    pages = {
      "products" => admin_products_path,
      "categories" => admin_categories_path,
      "catalogs" => admin_catalogs_path,
      "sales channels" => admin_sales_channels_path
    }
    pages.map do |key, value|
      classnames = %( class="current") if current_page?(value)
      "<li#{classnames}>#{link_to(key, value)}</li>"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

在/layouts/application.html.erb中:

<ul class="topmenu">
<%= topmenu %>
</ul>
Run Code Online (Sandbox Code Playgroud)

我的方法存在很大的缺陷.选择/admin/catalogs像魅力的工作.但是任何子页面都没有(/admin/catalogs/1等等)

我认为我的方法可能因current_page?方法的局限性而存在缺陷

你有什么想法我应该如何增强这个脚本来接受类似的网址,或者有更聪明的方法来实现它?

Cas*_*ida 5

一种简单的链接方式:

def current_link_to label, path
  link_to label, path, class: (current_page?(path) ? "active" : nil)
end
Run Code Online (Sandbox Code Playgroud)