我正在尝试用haml编写此html,以便如果该项目是当前项目,则添加id标签。这是为了设置jquery高亮显示。
<% if line_item == @current_item %>
<tr class="line_item id="current_item">
<% else %>
<tr class="line_item">
<% end %>
<td><%= line_item.quantity %>×</td>
<td><%= line_item.product.title %></td>
<td class="item_price"><%= number_to_currency(line_item.total_price) %></td>
</tr>
因为我不想编写helper方法,所以我将if语句放在了标签中:
%tr.line_item{ :id => (line_item == @current_item ? '' : 'current_item') }
%td
= line_item.quantity
%td
\x #{line_item.product.title}
%td.item_price
= number_to_currency(line_item.total_price)
%td.item_remove
= button_to 'Remove', line_item, :method => :delete
然而,'current_item‘的id标签适用于所有的项目,而不仅仅是当前的项目。这会导致javascript高亮显示所有条目或错误条目。关于如何让haml合作的想法?
发布于 2010-10-02 00:59:22
嗯,先生,你的情况不对:-)
它应该是
line_item == @current_item ? "current_item" : ""
有一件事并不美观--你最终会用id=""
来处理剩下的项目。但是有一个简单的解决方法:
%tr.lineitem{ :id => (line_item == @current_item ? "current_item" : nil)}
当您为属性返回HAML值时,nil
将忽略它,并且它不会出现在输出中。
发布于 2013-09-24 18:58:46
这也可以作为可接受答案中第一个解决方案的替代方案
= f.input_field :hello, disabled: (true unless SOME_CONDITION_HERE)
发布于 2016-12-07 07:30:05
将@vladCovaliov的答案放在问题的上下文中:
%tr.line_item{ id: (@current_item unless @current_item != line_item) }
https://stackoverflow.com/questions/3841116
复制相似问题