Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Как сделать условие для класса HAML в ruby

Автор вопроса: Dear1ofGdBearОтветов: 1

У меня есть страница с вкладками 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, который в настоящее время жестко закодирован на вкладке "a", на вкладке, на которую я только что добавил данные?

  • являются объектами a, b и c, которые мы можем повторять? или просто строки как меню? потому что, если это так, это можно сделать как помощник в цикле, и все Mohammad AbuShady 09.04.2015

rubyruby-on-railshamlconditional

Ответы

Ответ 1 · рейтинг 3 · DickieBoy

Что-то типа:

Контроллер:

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"

Хотя будет лучше работать с массивом.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы