繁体   English   中英

Ruby on Rails:我视图中的未定义方法部分

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM