我有这个Haml观点:
!!! strict
%html{:xmlns => "http://www.w3.org/1999/xhtml"}
%head
%meta{:content => "text/html; charset=utf-8", "http-equiv" => "Content-Type"}
%title
Lighty | #{@page_title || "Home"}
%body
#popup Login here
#fade
#wrapper
#container
#header
%a#logo{:href => "/"}
#menu
%ul#main
%li#lighty
%a{:href => "/"} Lighty
%ul
%li
%a Link here
%li#community
%a{:href => "/community"} Community
#content
我想在第16行添加if以检查它是否是当前访问过的页面,如果它返回true,则将“active”类添加到li
。
如何在那里写if语句并且有更简单的方法吗?
我现在的计划是使用@current_page
之类的变量并测试@current_page == "community"
是否为{{1}},如果它返回true则添加一个类。
我错了吗?有没有更简单的方法来实现这个目标?
答案 0 :(得分:2)
我强烈建议创建一个名为visited_class
的类型的辅助方法,因为它应该可以访问当前的控制器/动作。然后,您可以在辅助方法中编写所有代码的逻辑。这可以使您的观点更加清晰。
你可以把它放在很多地方,但由于我帮助的人很少,我通常会把它放在ApplicationHelper中:
def ApplicationHelper
def visited_class(controller, action)
if params[:controller] == controller && params[:action] == action
return " active"
else
return ""
end
end
end
然后,在您的视图/ HAML文件中,只需调用visited_class
并传入您要检查的控制器/操作。您也可以使用URL参数并将其从request.request_uri
拼凑在一起,但这可能会更乏味。
答案 1 :(得分:1)
将visited_class
建议的Topher
方法添加到app\helpers\application_helpers.rb
文件中。要向li
元素添加类,请按如下所示更改HAML:
%li#lighty{:class => "#{visited_class('pages', 'show')}"}
%a{:href => "/"} Lighty
%ul
%li
%a Link here