Rails не может дублировать ошибку NilClass на params - PullRequest
4 голосов
/ 24 января 2012

У меня в контроллере есть это:

@artists = Artist.where("artist LIKE ?", "%#{params[:term]}%").limit(500).paginate(params[:page]) 

И получаю ошибку can't dup NilClass.

Теперь params [: term] и params [: page] - это две разные переменные, так почему же должна появиться ошибка? Если я удалю вторую переменную params, ошибка исчезнет.

Оно все равно появится, даже если я сделаю это:

page = params[:page]

Тогда ниже:

paginate(page)

Я бы хотел понять, почему это происходит и как это исправить, как использовать 2 переменные из params () в одной строке без этой ошибки.

Редактировать

Я обнаружил, что замена целого числа на params [: page] приводит к несколько иной ошибке: can't dup FixNum, поэтому, возможно, проблема не в params, а в чем-то еще. Все еще не знаю, как решить это все же.

Ответы [ 2 ]

14 голосов
/ 24 января 2012

Моя ошибка.Я извиняюсь за это, но я использовал неуместно пагинат.Я хотел бы удалить этот вопрос, но, похоже, не существует способа.Правильный способ его использования:

paginate(:page => params[:page]

Полагаю, это то, что происходит, когда вы слишком долго рассматриваете код:)

Возможно, это поможет другим разобраться с Paginate.Мне действительно это нравится, но ошибки могут быть немного более описательными.

Например, я всегда получу неизвестную ошибку метода, если я не сделаю это:

<%= will_paginate @artists if @artists.respond_to? :total_pages %>
2 голосов
/ 29 января 2013

Спасибо, что не удалили этот вопрос.Я был одинаково небрежен и менял: paginate (params [: page]) на paginate (page: params [: page]) исправил это.

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