首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >If语句与haml、RoR中的相同块上的代码

If语句与haml、RoR中的相同块上的代码
EN

Stack Overflow用户
提问于 2010-03-30 00:33:58
回答 2查看 1.3K关注 0票数 0

我有一个哈默尔的观点:

代码语言:javascript
复制
!!! 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则添加一个类。

我是不是想错了?有没有更简单的方法来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-30 00:40:30

我强烈建议创建一个名为visited_class的帮助器方法或类似的方法,因为它应该可以访问当前的控制器/操作。然后,您可以在helper方法中编写所有的代码逻辑。这会让你的视图更加清晰。

你可以把它放在很多地方,但是因为我的助手太少了,所以我通常只把它放在ApplicationHelper中:

代码语言:javascript
复制
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中将其拼凑在一起,但这可能会有点繁琐。

票数 2
EN

Stack Overflow用户

发布于 2010-03-30 01:39:10

Topher建议的visited_class方法添加到app\helpers\application_helpers.rb文件中。要向li元素添加类,请按如下方式更改您的HAML:

代码语言:javascript
复制
%li#lighty{:class => "#{visited_class('pages', 'show')}"}
  %a{:href => "/"} Lighty
    %ul
      %li
        %a Link here
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2539616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档