好的,这些是我第一次尝试编写代码而没有任何教程或示例,所以可能我正在做一些非常愚蠢的事情。 我有一个评级模式,它是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' 为什么呢?
答案 0 :(得分:2)
此语法无效:
@party.Vote.build(:party_id => @party.id)
请改用:
@vote = @party.build_vote
无需指定party_id
。 build_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])