2

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

 - @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 语句管理过它,但后来有很多重复,我不太喜欢。有小费吗?

4

2 回答 2

1

尝试替换:'data' => @data ?'contract' : nil with :'data' => 'contract' if @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>
于 2013-01-28T10:12:52.537 回答
1

你可以试试这段代码:

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

haml 不会包含nil属性,因此它应该可以按您的预期工作。

于 2013-01-28T12:24:53.397 回答