[英]Ruby on Rails: undefined method in my view partial
我收到此错误: 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
这是因为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.html.erb中的video
变量访问video
看到这里更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.