我有一个哈默尔的观点:
!!! 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",如果返回true则添加一个类。
我是不是想错了?有没有更简单的方法来实现这一点?
发布于 2010-03-30 00:40:30
我强烈建议创建一个名为visited_class的帮助器方法或类似的方法,因为它应该可以访问当前的控制器/操作。然后,您可以在helper方法中编写所有的代码逻辑。这会让你的视图更加清晰。
你可以把它放在很多地方,但是因为我的助手太少了,所以我通常只把它放在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中将其拼凑在一起,但这可能会有点繁琐。
发布于 2010-03-30 01:39:10
将Topher建议的visited_class方法添加到app\helpers\application_helpers.rb文件中。要向li元素添加类,请按如下方式更改您的HAML:
%li#lighty{:class => "#{visited_class('pages', 'show')}"}
%a{:href => "/"} Lighty
%ul
%li
%a Link herehttps://stackoverflow.com/questions/2539616
复制相似问题