2013-06-23 18 views
2

事先道歉,rails新手。问题使用first_or_create检索对象时创建对象的评论

房东有N个评论,评论有1个房东

问:为什么我不能创建一个评论? (返回nil对象)

在landlords_controller#创建: 创建房东或找到一个凭据是否已经在数据库:

@landlord = Landlord.where(:name => params[:landlord][:name], 
:city => params[:landlord][:city], :province => params[:landlord][:province]).first_or_create! 

当我打电话@landlord.comments[0].setIP request.remote_ip后来

我收到错误undefined method setIP for nil:NilClass

在地主控制器中提供新的和创建方法

def new 
    @landlord = Landlord.new 
    @landlord.comments.build 
end 

def create  
#check if a landlord of the same name already exists and add comments to that db entry 
@landlord = Landlord.where(:name => params[:landlord][:name], :city =>  params[:landlord][:city], :province => params[:landlord][:province]).first_or_create! 
    #:comment => params[:landlord][:comments_attributes] 
    @landlord.comments[0].setIP request.remote_ip 

    if @landlord.save  

    redirect_to landlords_path 
    else 

end 

评论控制器是空的,我不是正面的,如果这是一个问题。

回答

2
@landlord.comments.create if @landlord.comments.empty? #add this step 
@landlord.comments[0].setIP request.remote_ip 

这是由于第一次创建时,即没有房东物件时,first_or_create!将无任何评论地创建landload对象。

+0

仍收到零:NilClass错误。已更新 – Derptacos

+0

。我的错。 –

+0

消除了零:NilClass – Derptacos