2011-03-26 3 views
0

я получаю эту ошибку, когда я Логин:Нужна помощь отладки эта ошибка

NoMethodError in Videos#index 

Showing /rubyprograms/dreamstill/app/views/videos/_video.html.erb where line #3 raised: 

undefined method `value' for nil:NilClass 

Я не знаю, почему я получаю эту ошибку, потому что мое приложение работало нормально раньше ... Вот _video.html.erb файл. Строка 3 является причиной ошибки:

1: <%= div_for video do %> 
2: <div class='voting_div'> 
3: <%= link_to "&uArr;".html_safe, video_votes_path(:video_id => video.id, :type => "up"), :method => :post, :remote => true, :class => "up_arrow round #{current_user && current_user.votes_for(video).value == 1 ? 'voted' : 'unvoted' }" %> 
4: <div id='vote_display' class = 'round'> 
5:  <p id='votes'> 
6:  <%= video.vote_sum %> 

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

ответ

0

Вы получаете пустой ответ для current_user.votes_for(video). Кроме того, current_user.votes_for(video) подразумевает, что результатом будет сборник, если это не так, я бы изменил его на user#vote_for(video).

<%= link_to "&uArr;".html_safe, ... :class => "up_arrow round #{current_user && (vote = current_user.votes_for(video)) && vote.value == 1 ? 'voted' : 'unvoted' }" %> 
+0

вау! это исправило это! почему ваш код работает и почему не работает? –

+0

Вы вернули нулевой результат для 'vote_for'. Сначала шахта выносит голосование, а затем вызывает «vote.value», только если это не ноль. – mnelson

+0

Хорошо, я не понимаю, как все по-другому ... это делает то, что я сделал, но в два шага, не уверен, почему у меня будет ошибка ... –

0

Другим решением может быть следующее:

<%= link_to "&uArr;".html_safe, video_votes_path(:video_id => video.id, :type => "up"), :method => :post, :remote => true, :class => "up_arrow round #{current_user && current_user.votes_for(video).try(:value) == 1 ? 'voted' : 'unvoted' }" %>

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