と の 2 つのモデルが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.
何か不足していますか?ありがとう。