Метод работает в консоли, но не в контроллере? - PullRequest
0 голосов
/ 25 декабря 2008

SORRY :: Я забыл, что params [: user_id] не существует в контроллере, используя current_user.id!

Я написал метод, который возвращает массив значений мест для пользовательских ставок, например, [2, 8, 10]. В консоли Rails все работает нормально, но переменная экземпляра из контроллера возвращает ноль в браузер. Что происходит?

Этот метод возвращает массив, такой как [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 голосов
/ 25 декабря 2008

будьте осторожны, вы, вероятно, видите, что интерактивность скрипта / консоли говорит вам больше, чем то, что на самом деле происходит в вашем методе.

Вопрос, ваш метод действительно что-то возвращает? попробуйте явно определить возврат и посмотреть, работает ли он для вас?

script / console (и irb) часто делают оценки STDOUT, которые возвращают вам вещи, которые на самом деле не возвращаются, чтобы предложить больше помощи отладки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...