HAML类字符串,基于if语句的类

时间:2017-05-09 11:58:48

标签: ruby-on-rails haml

我有这个HAML代码添加了一个基于if语句的“活动”类。

= link_to 'Contact Information',
  edit_account_path(:contact_information),
  class: ("active" if params[:section] == 'contact_information')

我还希望在if语句之外永久添加一串类。

这样的东西
= link_to 'Contact Information',
  edit_account_path(:contact_information),
  class: "Tab large", ("active" if params[:section] == 'contact_information')

我需要在不创建辅助方法的情况下执行此操作,因为我不允许编辑太多代码。

2 个答案:

答案 0 :(得分:2)

使用ternary operator

= link_to 'Contact Information',
  edit_account_path(:contact_information),
  class: "Tab large #{params[:section] == 'contact_information' ? 'active' : ''}"

第二个例子:

= link_to 'Contact Information',
  edit_account_path(:contact_information),
  class: current_page?(edit_user_registration_path) ? 'active' : ''

答案 1 :(得分:0)

创建一个帮助方法,比如find_classes,

def find_classes(section)
  default_class = ['Tab Large']
  if section == 'contact_information'
    default_class << 'active'
  end
  default_class.join(' ')
end

并且从您的角度来看,

class: find_classes(params[:section])

优势: 你可以有多个if,并且可以附加各种类。