2008-12-25 165 views
0

SORRY ::我忘了params [:user_id]在控制器中不存在,使用current_user.id!方法在控制台中工作,但不在控制器中?

我写了一个方法,返回用户出价的位置值数组,例如[2,8,10]。在Rails控制台中它工作正常,但控制器的实例变量返回到浏览器的nil。这是怎么回事?

此方法返回的数组如[1,2,3]从在控制器中的控制台

def bid_places(bid_user_id, auction_id) 

    unique_bids = Bid.find_all_by_auction_id(auction_id).uniq 
    unique_bids.sort! {|a, b| b.point <=> a.point } 

    a, n, places = 0, 0, [] 
    until a == 3 || n == unique_bids.count 
     place = n + 1 
     user = unique_bids.values_at(n).first.user_id 
     if user == bid_user_id 
     places[a] = place 
     a += 1 
     end 
     n += 1 
    end 
    places 
    end 

,这将返回[](使用调试器)

@user_places = @bid.bid_places(params[:user_id], params[:auction_id]) 
=> [] 
+0

如果没有一些代码,无法真正猜出发生了什么。 :P – eyelidlessness 2008-12-25 19:58:24

回答

0

要小心,你可能看到脚本/控制台的交互性告诉你比你的方法中实际发生的更多。

问题,你的方法实际上是否返回一些东西?尝试明确定义一个回报,看看它是否适合你?

脚本/控制台(和irb)通常会执行STDOUT评估,它会返回实际未返回的内容以提供更多调试帮助。

相关问题