我又被卡住了。
我在/ views /
中有这段代码<% if DistributionSheet.find(:all, :conditions => ["lifecycle_state = ?","closed"]).last %>
<% @Specimen_ids.each do |ds| %>
<th><%= ds.id %></th>
<% end %>
</tr>
<tr>
<% @all_results.each do |result| %>
<td><%= result.distribution_sheet_id %></td><td><%= result.lab_id %></td><td><%= result.kit %></td><td><%= result.batch_number %></td><td><%= result.cutoff %></td>
<% @Specimen_results.each do |sr| %>
<td><%= sr.result_user %></td>
<% end %>
</tr>
<% end %>
<%- end -%>
</tr>
在我的控制器中我有:
def first
@Specimen_ids = Specimen.find(:all, :order => 'distribution_sheet_id DESC', :limit => 10)
@all_results = Result.find(:all, :order => 'distribution_sheet_id DESC', :limit => 1)
@Specimen_results = SpecimenResult.find(:all, :order => 'id DESC', :limit => 10)
end
end
我想要的是,只有当LAST DistributionSheet'关闭'时,才输出上面详述的数据,仅用于关闭的DistributionSheet。
上面的代码确实输出了数据,但是对于所有的DistributionSheet。第一个if statememnt似乎没有做任何事情。我希望我已经解释过了。如果您想了解更多解释,请告诉我。 非常感谢提前。
答案 0 :(得分:1)
你想:
if DistributionSheet.find(:all).last.lifecycle_stated == "closed"
#code
end
它显示所有DistrubtionSheets,因为你抓取所有“关闭”的记录,只是检查该数组中的最后一个元素是不是nil / false。
你需要上面的代码,因为你得到了所有的工作表,然后检查最后一个工作表是否已经关闭,正如所说的那样是理想的结果。
两个旁注:
1)你的观点中真的不应该有DB调用。
2)你应该把结果限制在以下之外:全部。如果您的数据库中有大量记录,这将返回一个庞大的数据集。