我有一个辅助导航栏,允许用户在其帐户的各个方面之间移动。
DASHBOARD |活动|投资组合|项目
我希望current_page的CSS是粗体,这样当用户在“仪表板”上时,导航栏看起来像这样:
DASHBOARD |活动|投资组合|项目
我一直在摆弄
if current_page?(controller: 'users', action: 'edit)
<span class="bold">DASHBOARD</span>
else
DASHBOARD
end
和类似的代码,但它不起作用。原因是我用来生成视图的嵌套部分。
例如,用户只能显示自己的帐户信息,但由于每个用户都可以拥有多个项目,我正在调用views/projects/_list_by_owner.html.erb
下的部分内容并传入
@projects = Project.where(:owner_id => current_user.id)
的 users_controller#show
。
由于视图是从users_controller
而不是projects_controller
生成的,因此它没有找到正确的current_page()
。
关于如何深入挖掘控制器/动作嵌套的想法,或者是动态生成css类的更好方法?
答案 0 :(得分:1)
继承人我会做什么
助手类
def currentp(path)
"bold" if request.url.include?(path)
end
查看强>
<%= link_to "users", posts_path, class: currentp(posts_path) %>
编辑:添加说明
如果您在视图(模板)中工作,则需要使用帮助程序,并且需要构建复杂的HTML,例如甚至定义类。它还允许您在不连接数据库的情况下更改数据的表示。
所以在App&gt;&gt;下助手&gt;&gt; users_helper.rb
添加以下代码:
module LocationsHelper
def currentp(path)
"bold" if request.url.include?(path)
end
end
这将在currentp
被调用的任何地方找到,如果页面在当前路径上,它会将html中的类定义为bold
。
然后您可以使用简单的CSS来定义粗体类
a.bold{
font-weight:700;
text-decoration:underline;
}