为什么投票是Nil级?

时间:2013-03-04 22:29:01

标签: ruby-on-rails ruby-on-rails-3

好的,这些是我第一次尝试编写代码而没有任何教程或示例,所以可能我正在做一些非常愚蠢的事情。 我有一个评级模式,它是Party的父级,是投票的父级。我没有为投票生成脚手架,只是模型,因为我认为通常我不需要在这里拥有所有标准控制器或视图。我尝试添加简单的投票系统(我知道宝石,但为了练习,我想自己做)

所以我的派对模特:

class Party < ActiveRecord::Base
  belongs_to :rating
  has_one :vote
  end

end

投票模型:

 class Vote < ActiveRecord::Base
  attr_accessible :negative, :positive, :party_id
  belongs_to :party
  #def self.build(party_id)
    #return Vote.new(:party_id=>party_id)
  #end

end

Parties_controller:

def create
    @rating = current_rating
    @party = @rating.parties.build(:rating_id => @rating_id)
    #@vote = Vote.add_voting(@party.id)
    @vote = @party.Vote.build(:party_id=>@party.id)

评论部分是尝试做同样的事情之一 如果在视野中我要求上课:

<%  @rating.parties.each do |item| %>
      <p><%= item.name %></p>
       <p><%= item.vote.class %></p>
    <% end %>

显示'nilClass' 为什么呢?

2 个答案:

答案 0 :(得分:2)

此语法无效:

@party.Vote.build(:party_id => @party.id)

请改用:

@vote = @party.build_vote

无需指定party_idbuild_vote方法会为您执行此操作。

请参阅Rails Guides上的说明。

答案 1 :(得分:0)

@positive_votes = Vote.find_by_positive(params[:user_uid, :party_id])

find_by_positive期望搜索数据库中的“肯定”列,但是您传入的是user_id和party_id。试试这个:

@positive_votes = Vote.find_by_user_uid_and_party_id(params[:user_uid], params[:party_id])