我收到此错误: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
未定义的原因?
更新:
这是我的video_votes控制器的create方法中的相关代码:
@video = Video.find(params[:video_vote][:video_id])
@vote = @video.video_votes.new
答案 0 :(得分:1)
这是说vote_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.html.erb中的video
变量访问该视频
有关详情,请参阅here。