如果条件在haml视图中

时间:2013-01-28 09:38:51

标签: ruby-on-rails ruby if-statement haml custom-data-attribute

如果满足条件,我想设置:data attr。在这种情况下,用户应该有一个角色。所以这是一个布尔语句。让我举个例子。

 - @data = 'contract-confirm'

 .create_button= link_to 'Something', new_some_path(@customer), :class => 'btn btn-success', :'data' => @data ? 'contract' : nil
 .clearer

所以我知道这可能看起来很奇怪,但我想设置一个数据属性,如果客户被标记,然后将js挂钩到该数据attr。那部分有效。什么行不通的是现在我总是设置属性。因此,即使客户没有角色,js也会被钩住。我知道我没有明确指出这里的所有角色。我有一个@ customer.role?但我似乎无法将其合理地纳入其中。我之前使用if else语句进行了管理,但后来又进行了大量复制,而我并没有这么做。有什么提示吗?

2 个答案:

答案 0 :(得分:1)

尝试替换:'data'=> @data? 'contract':nil :'data'=> '合约'如果@data 。 我检查了下一个代码:

- @data_present = true
= link_to 'Something', root_path, :class => 'btn', :'data' => ('test' if @data_present)

呈现给:

<a href="/" class="btn" data="test">Something</a>

没有的代码 - @data_present = true 呈现给:

<a href="/" class="btn">Something</a>

答案 1 :(得分:1)

你可以尝试这段代码:

link_to 'Something', ... , :data => @customer.role? ? 'contract' : nil 

haml不包含 nil 属性,因此它应该按预期工作。