2010-12-31 2 views
0

Я написал эту функцию:Операторы в рубин на рельсах не распознан

if params[:id] > @max 
    @page = @max 
    end 

Здесь @max представляет собой целое число, а значение params[:id] не является nil.

Он говорит, что проблема в первой строке, и проблема заключается в:

неопределенный метод `>» для ноль: NilClass

Он не признает > как оператор. Почему это так?

+0

Вы уверены, что значение params [: id] не равно нулю? Эта ошибка означает, что это так. –

ответ

0

Он не признает его оператором на NilClass, как он говорит. params[:id] должно быть nil. Проверьте список журналов Rails для списка параметров, входящих в запрос. Я предполагаю, что параметр называется иначе, чем вы думаете. Попробуйте if params[:id].present? && params[:id] > @max или params[:id].to_i > @max, чтобы обойти исключение.

+2

'params [: id] .to_i' просто замаскирует проблему, так как' nil.to_i' возвращает 0; это может быть очень опасно, если '0' является допустимым идентификатором для некоторого объекта. – Phrogz

3

Да, params[:id]являетсяnil. Вот что значит эта ошибка. Возможно, вы хотели вместо этого params['id']? Если у вас есть доступ к консоли для вашего приложения, попробуйте p params, params[:id] и повторите запрос, чтобы узнать, какие значения есть, и значение params[:id].