と の 2 つのモデルがPlaceありAddressます。モデルの関係は、
Placeで、has_one :address , :dependent => :destroy
でAddress、belongs_to :place。
新しいフォームでは、フォームを使用して問題なくPlaces Controllerフィールドを追加できます。Addressfields_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.
何か不足していますか?ありがとう。