我正在循环一些项目,名称应该是自我解释的:
<% [@in_force_item, @draft_item, @historical_items].compact.flatten.each do |item| %>
<tr>
<td>
<label><input class="select" type="checkbox" /></label>
</td>
<td>
<% if item == @draft_item %>
<div> <%= link_to('', edit_account_item_path(@account, @draft_loa_item), class: 'black-icon-color') %></div>
<% else %>
<i class="lock"></i>
<span class='black-icon-color'></span>
<% end %>
</td>
<td>
<% updated_at = datetime_to_string item.updated_at %>
<%= link_to(updated_at, account_item_path(@account, item)) %>
</td>
<td><%= lifecycle_label(item) %></td>
</tr>
<% end %>
我遇到问题的一条线是检查该项目是否为草稿。
<% if item == @draft_item %>
这似乎不起作用,我不知道如何去做。我的Item模型中是否需要一个方法来检查它是否为草稿?
我怎样才能做到这一点?
编辑:模型有这个:
COMPOSITE_DRAFT = [LIFECYCLE_DRAFT_NUM, LIFECYCLE_RETURNED_NUM]
LIFECYCLE_DRAFT_NAME = 'Draft'
LIFECYCLE_DRAFT_NUM = 0
LIFECYCLE_RETURNED_NAME = 'Returned'
LIFECYCLE_RETURNED_NUM = 2
所以我应该可以使用类似的东西:
item.lifecycle_num.????
答案 0 :(得分:0)
您的商品应该有状态, - 这样您就可以调用item.draft?
方法,而且,您也不需要三个独立的实例变量。请查看aasm gem以获取更多信息。
答案 1 :(得分:0)
假设这三个都是ActiveRecord对象,您可以检查item.id == @draft_item.id
答案 2 :(得分:0)
根据我的理解,每个&#39; @in_force_item,@ draft_item,@ historical_items&#39;也是数组。是
因此,当您执行[@in_force_item, @draft_item, @historical_items].flatten
结果时,您将获得包含来自&#39; @in_force_item,@ draft_item,@ historical_items&#39;阵列。阵列&#39; @ draft_item&#39;在这个新阵列中没有,但是这个&#39;的元素。在场。
所以,你可以写:
<% if @draft_item.include? (item) %>