2016-03-04 65 views
0

我有以下代碼迭代一個返回的DataMapper類的單一或多個

if admin_authorized? 
    @allschools = School.all 
elsif faculty_authorized? 
    @allschools = School.get(Faculty.get(session[:faculty_id])) 
end 

我收到此錯誤

undefined method `each' for #<School:0x007f88a1360318> 

@allschools要麼是學校或單數組學校。我需要遍歷這個列表視圖,就像這樣:

<% @allschools.each do |s| %> 
    <%= f_optionselected(s.id.to_s, params[:school], s.name) %> 
<% end %> 

我試過,如果用@ allschools.count,@ allschools.typeof(陣列)報表做的,....

我應該使用兩個不同的變量和一個PHP類型isset()來確定要顯示哪個塊?或者有沒有一種方法可以用Ruby方式遍歷語句?

回答

0

School.all返回一個ActiveRecord :: Relation,你可以遍歷它,就像你用each一樣。我認爲School.get返回一個單一的學校實例,對吧?嘗試將其包裝到一個陣列中:

@allschools = [School.get(Faculty.get(session[:faculty_id]))] 
+0

您的假設是正確的。 School.all以數組/散列形式返回並具有.each方法,而School.get僅返回一條記錄。我仍然得到這個錯誤:undefined method'each'for#

+0

你的錯誤表明你爲'School'實例調用'each'。你確定,你試圖把單個實例放入數組中?如果你這樣做了,你應該能夠遍歷它並保持你的視圖保持原樣。 – guitarman

+0

我把你的示例代碼,並得到該錯誤代碼。我知道幾乎知道紅寶石。 –

相關問題