2011-04-04 58 views
0

我再次卡住。如果在具有实例变量的视图中查询控制器

我有这样的代码在我的/视图/

<% 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 

我要的是如果最后DistributionSheet被“关闭”,然后输出到只能说仅在上面关于DistributionSheet的详细数据。

上面的代码确实输出数据,但对于所有的DistributionSheet。第一个如果statememnt似乎没有做任何事情。我希望我已经解释了这一点。如果你喜欢更多的解释,那么请告诉我。 非常感谢提前。

回答

1

你想:

if DistributionSheet.find(:all).last.lifecycle_stated == "closed" 
    #code 
end 

它显示的是所有的DistrubtionSheets因为你抓住一切都是“封闭”的记载,只是检查,看看是否该数组中的最后一个元素是不是零/假。

你想得到上面的代码,因为你得到了所有的工作表,然后检查最后一个被修复的工作是否实际上是关闭的,正如所述的是所期望的结果。

两个旁注:

1)你真的不应该有DB调用你的意见。 2)你应该真的限制你的结果,而不是:all。如果您的数据库中有大量记录,这将返回一个巨大的数据集。

相关问题