2010-02-15 37 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

相关问题