如果我的搜索条件出现空结果,我试图避免在数据表中出错。有没有办法获得将在表中返回的行数?
我的表格代码如下:
<% @loads.each do |load| %>
<% if load.trucker == current_trucker and (load.pickup_datetime <= Date.today or load.current_status == "ON HOLD") %>
我只想提前一行检查它是否会返回1行或更多行(如果它为空,我可以删除结果)。
有什么想法吗?对我很轻松 - 我是一个业余爱好的人。
由于
答案 0 :(得分:0)
不是循环遍历所有@loads
,而是将条件集成到查询中。例如,控制器中的 ,
@loads = @loads.where(
'load.trucker == ? and (load.pickup_datetime <= ? or load.current_status == ?)',
[current_trucker, Date.today, 'ON HOLD']
)
希望这可以解决您视图中的问题,但如果没有视图代码和堆栈跟踪,则很难调试。
至少,将数据库查询移动到控制器是朝着正确方向迈出的一步。使用controller test进行测试应该更高效,更容易。