Если вы определите частичный _dashboard_tab
следующим образом
.dashboard_tab{class: active ? 'active' : '', data: {tab: tab_name}
- shipments_count = shipments.try(:count) || 0
%h2= title
.badge{ class: [shipments_count.zero? && 'empty'] }= shipments_count
Вы можете переписать исходный вид следующим образом:
.dashboard_tabs
= render 'dashboard_tab', active: true, tab_name: 'problems', |
title: 'Problems', shipments: problem_shipments
= render 'dashboard_tab', active: false, tab_name: 'created', |
title: 'Created', shipments: shipments
= render 'dashboard_tab', active: false, tab_name: 'requests', |
title: 'RFQ', shipments: shipment_requests
= render 'dashboard_tab', active: false, tab_name: 'requests', |
title: 'RFQ', shipments: shipment_requests
= render 'dashboard_tab', active: false, tab_name: 'pickups', |
title: 'Pickup request', shipments: pickups
Это начало. Теперь мы пропускаем класс danger
для значка проблем, и мы повторяем active
, пока мы только хотим, чтобы сначала были активными (и по умолчанию false).
Таким образом, мы можем немного оптимизировать наше частичное, добавив дополнительный класс значка (и сделав его необязательным) и сделав активное состояние также необязательным.
Таким образом, мы адаптируем частичное следующим образом:
- active = local_assigns.has_key?(:active) ? active : false
- badge_class = local_assigns.has_key?(:badge_class) ? badge_class : ''
.dashboard_tab{class: active ? 'active' : '', data: {tab: tab_name}
- shipments_count = shipments.try(:count) || 0
%h2= title
- badge_classes = [badge_class]
- badge_classes << 'empty' if shipments_count.zero?
.badge{ class: badge_classes.join(" ") }= shipments_count
и тогда мы можем написать оригинальный список вкладок следующим образом:
.dashboard_tabs
= render 'dashboard_tab', active: true, badge_class: 'danger', tab_name: 'problems', |
title: 'Problems', shipments: problem_shipments
= render 'dashboard_tab', tab_name: 'created', title: 'Created', shipments: shipments,
= render 'dashboard_tab', tab_name: 'requests', title: 'RFQ', shipments: shipment_requests
= render 'dashboard_tab', tab_name: 'requests', title: 'RFQ', shipments: shipment_requests
= render 'dashboard_tab', tab_name: 'pickups', title: 'Pickup request', shipments: pickups