2010-02-15 40 views
0

這可能很簡單,但我剛開始使用rails。當只有一個記錄被發現時,ActiveRecord沒有返回迭代

我有以下聲明:

@subjects = Cartitem.find_by_cid(session[:customerid]) 

在我看來,我有一些像這樣的代碼:

<% @subjects.each do |d| %> 
<tbody> 
    <tr> 

當上面的查詢返回多行時,所有的作品。但是,當上述查詢返回只有一行,然後我在我的視圖中得到一個錯誤說方法each未定義。

避免這種情況的方法是什麼?在我看來,我需要一些if/else嗎?

回答

3

大概

@subjects = Cartitem.find_all_by_cid(session[:customerid]) 

會的工作,因爲Rails文檔說,這條線你給了:

@subjects = Cartitem.find_by_cid(session[:customerid]) 

實際上將調用:

Cartitem.find(:first, :conditions => ["cid = ?", session[:customerid]]) 

我不認爲解決方案與to_a(由user141146提到)將工作,因爲,正在返回的對象不是任何種類QuerySet的實例(例如,像在Django中),但純模型實例因此它可能根本不會有這種方法。

+0

你可以通過做一些類似[@subjects] .flatten – EmFi

相關問題