2013-07-12 2 views
0

я получаю эту классическую ошибку:Неопределенный метод для переменной экземпляра, которая очень определена? Рельсы

ActionView::Template::Error (undefined method `count' for nil:NilClass): 
    34:    </li> 
    35:    <%end%> 
    36: 
    37:    <%if @today_jobs.count == 0 %> 

Но в приведенных выше, что линии:

<%if @accepted_jobs.count == 0 %> 

И в контроллере:

@accepted_jobs = Job.where({:status => ["2", "4"],:admin_id => session[:user_id].to_s}) 
@today_jobs = Job.where({:status => "2",:admin_id=>session[:user_id].to_s,:start_date => Date.to_mongo(Date.today) }) 

Так как эти переменные но не мое, но мое приложение может «запомнить» значение одного из них и забывает о значении другого.

Я уверен, что это что-то очень просто, я спускаюсь, но я этого не вижу.

+0

Сообщение об ошибке очень верно. Воспроизводить минимально: 'nil.count'; теперь, с учетом этого, это просто вопрос * почему * указанная переменная оценивается как «nil». Некоторые случаи для изучения: 1) назначение никогда не выполнялось * этот запрос *; 2) переменная была переназначена позже; 3) Job.where возвращает nil. Я подозреваю, что проблема №1. – user2246674

+0

@ user2246674 Вы правы - задание выполнялось не по просьбе, я думал, что это делается - было слишком очевидно, чтобы видеть :) – notaceo

ответ

0

Ваша ошибка говорит undefined method 'count' for nil:NilClass, что означает, что @accepted_jobs - это нуль. Здесь находится ключ nil:NilClass.

Вы можете переписать это сказать что-то вроде:

<% if @today_jobs? 
    <% if @today_jobs.count == 0 %> 
    ... 
    <% end %> 
<% end %> 
+0

Это правильный ответ. Моя фактическая проблема заключалась в том, что я определял @today_jobs в индексе, но не в методе show, который был тем, что отображалось, когда я возвращался на домашнюю страницу (в отличие от отображения при первом входе в систему). Я даю вам чек, потому что ваш путь тоже сработает. – notaceo

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