Ruby on Rails: неопределенный метод на мой взгляд частично - PullRequest
0 голосов
/ 18 марта 2011

Я получаю эту ошибку: undefined method 'vote_sum' for nil:NilClass

для этой строки на мой взгляд частично: <p id='votes'><%= pluralize @video.vote_sum, 'Votes' %></p>

Я не понимаю, почему, поскольку vote_sum является столбцом в таблице видео. Вот некоторая логика в моей Video модели:

def vote_sum
  read_attribute(:vote_sum) || video_votes.sum(:value)
end

и моя VideoVote модель:

after_create :update_vote_sum

private

  def update_vote_sum
    video.update_attributes(:vote_sum => video.vote_sum + value)
  end

Любое понимание того, почему @video.vote_sum является неопределенным, на мой взгляд, частично?

UPDATE:

Вот соответствующий код в методе создания моего контроллера video_votes:

  @video = Video.find(params[:video_vote][:video_id])
  @vote = @video.video_votes.new 

1 Ответ

1 голос
/ 18 марта 2011

Говорят, что voice_sum - это неопределенный метод, потому что он не вызывает его в видео, а фактически вызывает его в Nil.Это происходит потому, что @video имеет значение nil, а не является экземпляром Video.

Проблема в том, что @video неправильно настроен в вашем контроллере.

Я думаю, что вы хотите

@video = Video.find(params[:video_id]) 

при условии, что params [: video_id] существует.

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

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

<%= render @videos %> # assuming you have a partial called _video.html.erb

Для доступа к видео вы получаете доступ к нему с помощью переменной video в_video.html.erb

См. здесь для получения дополнительной информации.

...