ruby-on-rails - 在 Rails 3 的菜单部分中渲染事件菜单元素

标签 ruby-on-rails menu partials

我有一个根据用户所在页面呈现的动态子菜单。我将以下代码放置在 _sub_menu.html.erb 部分中:

<a href="/dashboard/index" class="current">Index</a>
<a href="/dashboard/account">Account</a>
<a href="/dashboard/payments">Payments</a>`

从我的主视图来看,我调用 <%= render 'sub_menu' %> ,有效。

但是,我想根据用户所在的页面更改 class="current"部分。我希望通过传入本地参数并根据该参数进行渲染来从渲染中做到这一点,但这似乎很hacky:

<%= render 'sub_menu' , :locals => {:active_item => 'payments'} %>

而且逻辑变得非常丑陋。有更好的方法吗?

最佳答案

您可以定义一个额外的辅助方法,该方法将调用 link_to_unless_current :

def link_to_current_with_class(name, current_class, options = {}, html_options = {}, &block)
  link_to_unless_current(name, options, html_options) do
    options[:class] = current_class + " " + options[:class]
    link_to(name, options, html_options)
  end
end

然后从您的导航部分调用它:

<%= link_to_current_with_class "Index", "current", "/dashboard/index" %>

关于ruby-on-rails - 在 Rails 3 的菜单部分中渲染事件菜单元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988404/

相关文章:

ruby-on-rails - Partial, Layout, Template 渲染问题

ruby-on-rails - rails 通常如何知道在什么环境下运行?

mysql - 在rails应用程序中以root身份访问mysql数据库被拒绝

ruby-on-rails - Rails AJAX 不呈现部分

css - 移动菜单 - 汉堡包图标 - 'hover' 颜色不变, 'focus' 链接不起作用

css - 对于我的生活,我无法弄清楚 : How do you create a CSS slanted tab menu?

ruby-on-rails-3.1 - 无法在 coffeescript 中呈现部分 coffeescript

php - zend框架中的部分循环

ruby-on-rails - 如何在 Rails 中以 mb 为单位获取 ruby​​ 对象的大小?

Java 添加菜单到框架