我有两个模型,Place和Address。模型关系是,
在Place,has_one :address , :dependent => :destroy
在Address,belongs_to :place。
在新表单中,Places Controller我可以Address毫无问题地添加字段fields_for :address。
但是当显示一个Place细节时,我无法得到Address那个地方的细节。我不知道我在哪里做错了。
在show.html.erb中Places Controller,我有,
<% @places.each do |place| %>
<p>
<b>Max people:</b>
<%=h place.max_people %>
</p>
<p>
<b>Street:</b>
<%=h place.address.street %>
</p>
<p> City: </b>
<%=h place.address.city %>
</p>
<p> Pincode: </b>
<%=h place.pincode %>
</p>
<% end %>
所以,在PlacesController,
def show
@userid=session[:userid]
@places = Place.find(:all , :conditions => ["user_id = ?", @userid])
respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @place }
end
end
它正确显示所有Place详细信息,但不显示Address详细信息。我已经通过 SO 搜索以找到我的错误,但我发现的只是表格问题。就我而言,新表单正常工作,但不显示。
错误是,
NoMethodError in Places#show
Showing app/views/places/show.html.erb where line #9 raised:
undefined method `street' for nil:NilClass
在控制台中,
`Place.last.address.street` gives me correct data.
我错过了什么吗?谢谢。