方法在控制台中工作但在控制器中不起作用?

时间:2008-12-25 19:51:03

标签: ruby-on-rails

SORRY ::我忘记了使用current_user.id在控制器中不存在params [: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])
=> []

1 个答案:

答案 0 :(得分:0)

小心,你可能会看到脚本/控制台的交互性告诉你的不仅仅是方法中的实际情况。

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

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