2

提前道歉,Rails新手。

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

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

在landlands_controller#create: 创建地主或如果凭据已经在数据库中则查找一个:

@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

在房东控制器中提供 new 和 create 方法

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

结尾

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

4

1 回答 1

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

这是由于您第一次创建时,即没有房东对象存在时,first_or_create!将创建不带任何评论的 Landload 对象。

于 2013-06-23T17:00:04.047 回答