2017-05-09 26 views
0

我有这个HAML代码添加基于if语句的“活动”类。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') 

我需要这样做,而无需创建一个辅助方法,因为我不能给太多的编辑代码。

+1

[在rails中使用帮助器方法将动态属性添加到HAML标记]可能的副本(http://stackoverflow.com/questions/10902377/adding-dynamic-attributes-to-haml-tag-using-helper-method- in-rails) – Iceman

回答

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' : '' 
+0

现在,这有点笨拙,在这里寻找答案是一种理解做事的概念/方式,而不是要求完成工作的方法。第一个例子本身的逻辑是非常自我解释的。 –

+0

嘿!我删除了评论。 – colmtuite

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,并且可以附加各种类别。