2015-04-24 3 views
-3

Я использую RubyMine для создания сайта. У меня есть расчет, который я делаю в модели, которая больше не работает. Он работал ранее, но теперь я получаю NoMethodError, заявляя, что существует неопределенный метод `+ 'для nil: NilClassundefined method `+ 'for nil: NilClass in Ruby

У меня есть несколько целых чисел. Я добавляю в свою модель« »с сортировкой областей следующим образом:

scope :sorted, -> { select('*, (passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency) as xoi').order('xoi DESC') } 

def xoi 
    passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency 
    end 

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

Я все еще могу определить «xoi» только с одним из этих целых чисел, и целое будет отображаться правильно. Я также могу определить «xoi» с 2 + 2, и ответ будет отображаться на моей веб-странице правильно как 4. Но этот расчет больше не работает.

HTML-страница отображения результатов этого расчета заключается в следующем:

<% @players.each do |player| %> 
     <tr> 
      <td><%= player.xoi %></td> 
      <td><%= player.last_name %></td> 
      <td><%= player.first_name %></td> 
      <td><%= player.pos %></td> 
      <td><%= player.team %></td> 
      <td><%= player.passing_yards %></td> 
      <td><%= player.passing_tds %></td> 
      <td><%= player.qb_rushing %></td> 
      <td><%= player.coaching_staff %></td> 
      <td><%= player.age %></td> 
      <td><%= player.physical_tools %></td> 
      <td><%= player.intellect %></td> 
      <td><%= player.surrounding_talent %></td> 
      <td><%= player.health %></td> 
      <td><%= player.consistency %></td> 

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

Как будто «+» больше не работает для этого вычисления (но я уверен, что просто делаю что-то не так).

Буду признателен за понимание.

+0

Что вы хотите сказать? – sawa

+1

Что такое pass_yards и pass_tds? – pangpang

+0

Извините ... Я не вставлял весь раздел. – cwayne2

ответ

0

Я не понимаю, почему метод не определен

Здесь метод определен. Проверьте ошибку ниже.

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

Проблема заключается в том, что

passing_yards 

может быть ноль для этого сценария. Таким образом, при оценке def xoi

passing_yards + passing_tds + qb_rushing + coaching_staff + age + physical_tools + intellect + surrounding_talent + health + consistency 

он оценивает в

nil + passing_tds + ... 

, не допускается в рубин. Проверьте то же самое в irb, если хотите.

> nil + 2 
=> #<NoMethodError: undefined method `+' for nil:NilClass> 
> 
+0

Нет ... это не так. Если я добавлю каждое значение на свой собственный (т. Е. Pass_yards сам по себе или pass_tds сам по себе) ... он отлично работает. Так или иначе, это просто не добавляет их.И это работало ранее, поэтому я не знаю, почему это внезапно остановилось. – cwayne2

+0

Как будто он внезапно не знает, что означает «+». – cwayne2

+0

Мне жаль, что вам не нравится его ответ, но это правда. Ничего не забыл о плюсе. Что-то теперь ничто, что раньше не было, и вы не можете использовать + с nil. nil - это то, что не знает, что означает «+». – NevDull

 Смежные вопросы

  • Нет связанных вопросов^_^