我有两个模型,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.
我错过了什么吗?谢谢。