如何使ruby中的HAML类成为条件

时间:2015-04-09 16:49:33

标签: ruby-on-rails ruby conditional haml

我有一个包含标签A,B和C的页面,每个标签都包含一个'事物列表。当我创造一个新的东西'我指定它是否是列表A,B或C的一部分。我希望在新的'之后使用相应的标签。保存并有页面刷新。

这是我的标签HAML

%ul.nav.nav-tabs
  %li.active 
    %a{href:"#a", :"data-toggle" => "tab"}
      "A things"
  %li
    %a{href:"#b", :"data-toggle" => "tab"}
      "B things"
  %li
    %a{href:"#c", :"data-toggle" => "tab"}
      "C things"

.tab-content
  #a.tab-pane.fade.in.active
    "tab data"
  #b.tab-pane.fade.in
    "tab data"
  #c.tab-pane.fade.in
    "tab data"

我如何编写一个ruby条件,将active类放在选项卡上,该选项目前在选项卡上进行了硬编码,而我只是将数据添加到了?

1 个答案:

答案 0 :(得分:2)

类似的东西:

控制器:

class ThingsController < ActionController::Base
  def create
    @active_tab = *some logic to get the tab*
    # create logic
  end
end

查看:

%ul.nav.nav-tabs
  %li{class: @active_tab.nil? || @active_tab == "A" ? "active : ""}
    %a{href:"#a", :"data-toggle" => "tab"}
      "A things"
  %li{class: @active_tab == "B" ? "active : ""}
    %a{href:"#b", :"data-toggle" => "tab"}
      "B things"
  %li{class: @active_tab == "C" ? "active : ""}
    %a{href:"#c", :"data-toggle" => "tab"}
      "C things"
.tab-content
  %a.tab-pane.fade.in{class: @active_tab.nil? || @active_tab == "A" ? "active : ""}
    "tab data"
  %b.tab-pane.fade.in{class: @active_tab == "B" ? "active : ""}
    "tab data"
  %c.tab-pane.fade.in{class: @active_tab == "C" ? "active : ""}
    "tab data"

尽管使用数组会更好。