这可能很简单,但我开始使用rails。
我有以下声明:
@subjects = Cartitem.find_by_cid(session[:customerid])
在我的视图中,我有一些像这样的代码:
<% @subjects.each do |d| %>
<tbody>
<tr>
当上述查询返回多行时,一切正常。但是,当上面的查询只返回一行时,我的视图中出现错误,说明方法each
未定义。
避免这种情况的方法是什么?我的观点中是否需要if/else
?
答案 0 :(得分: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中),而是纯模型因此它可能根本没有这种方法。