【问题标题】:Method works in console but not in the controller?方法在控制台中有效,但在控制器中无效?
【发布时间】:2008-12-25 19:51:02
【问题描述】:

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])
=> []

【问题讨论】:

  • 如果没有一些代码,真的无法猜测发生了什么。 :P

标签: ruby-on-rails


【解决方案1】:

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

问题,你的方法是否真的返回了一些东西?尝试明确定义退货,看看它是否适合您?

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

【讨论】:

    猜你喜欢
    • 2019-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    • 2018-12-26
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多