Ruby on Rails突出显示导航栏上的当前链接?

任何人都可以告诉我如何使用css突出显示(使用颜色)导航栏上的当前链接? 我不想使用控制器选项。 以下是shared / menu.html.erb中的代码:

 

有一些方法,但如果你是一个简单的方法,我建议你的身体添加一个类。

  ...  

然后在你的CSS中你可以做到以下几点。

 body.menus_controller #navigation a.menunav, body.drinks_controller #navigation a.drinknav { background-color : yellow color : blue } 

如果您要分割多个页面,这可能会变得复杂,但对于此基本示例,它应该没问题。

第一种方法是处理当前的controller_nameaction_name以检测您所在的页面。 它很好,但它为客户端特定的模板添加了一些服务器端。 rails helper使用的方式是link_to_unless_current 。 JS的最低使用量。 在这里查看示例

第二种是解析$(位置)并直接将某个类添加到所选导航项以突出显示它。

第三个(取决于对象)是使用当前实体状态构建JS对象,并添加方法以将类添加到活动导航。 然后,您可以实例化此JS类,传递对象并保持逻辑封装。

这样的东西对你有用。 当然,你必须根据你的目的调整它,也许在匹配时会变得更复杂(目前这只会匹配路径,就像你的例子中那样)。

 $("#navigation a[href="+window.location.pathname+"]") .closest('li') .css('background-color', '#ff0'); 

更好的是,你在某个地方定义了一个“当前”类,然后简单地添加它:

 /* in some stylesheet */ #navigation li.current { background-color: #ff0; } /* then the js */ $("#navigation a[href="+window.location.pathname+"]") .closest('li') .addClass('current');