2011-04-04 57 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。如果您的數據庫中有大量記錄,這將返回一個巨大的數據集。

相關問題