提前道歉,铁杆新手。
房东有N个评论,评论有1个房东
问题:我为什么不发表评论? (返回一个零对象)
在landlords_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
在房东控制器中提供新方法和创建方法
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
端
注释控制器是空的,如果这是一个问题,我不肯定。
答案 0 :(得分:2)
@landlord.comments.create if @landlord.comments.empty? #add this step
@landlord.comments[0].setIP request.remote_ip
这是因为你第一次创建时,即没有房东对象,first_or_create!将创建landload对象而不做任何评论。