Ruby on rails haml视图中的if条件

Ruby on rails haml视图中的if条件,ruby-on-rails,ruby,if-statement,haml,custom-data-attribute,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 所以我知道这看起来很奇怪,但我想设置

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

 - @data = 'contract-confirm'

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

所以我知道这看起来很奇怪,但我想设置一个数据属性,如果客户被标记,然后将js挂接到那个数据属性。那部分有效。不起作用的是,现在我总是设置属性。因此,即使在客户没有角色的情况下,js也会上钩。我知道我并没有明确指出这里的角色。我有一个@customer.role?但我似乎不能很好地把它结合起来。我以前用if-else语句来管理它,但后来用了很多我不太喜欢的重复。有什么提示吗?

尝试替换:“数据”=>@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>
<a href="/" class="btn">Something</a>

不带-@data\u present=true的代码呈现为:

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

您可以尝试以下代码:

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

haml不包含nil属性,所以它应该像您期望的那样工作。

Thx获取答案。嗯,我不能完全理解你在这里要做什么:你总是把@data变量设置为某个字符串,然后用三元运算符测试这个变量:嗯,它的值总是为真的,因为你刚刚把变量分配给了一个字符串。或者在第一行和第三行之间还有其他代码吗?嗯,我明白你的意思。我想做的是设置数据属性,若客户在角色中,若不在角色中,将其设置为nil。你们明白我的意思吗?这行吗?链接到“某物”,…,:data=>@customer.role???'实际上是这样的。非常感谢。我真的是瞎盯着那个。输入的Thx。我把你的答案贴出来,我可以把它标记为正确的答案。