2011-06-21 24 views
7

Yapı iskelesi tarafından oluşturulan varsayılan kodu kullanıyorum. Ben hiçbir şeyi değiştirmedim.undefined method model_name

Showing app/views/presences/_form.html.erb where line #1 raised: 
undefined method `model_name' for NilClass:Class 

1: <%= form_for(@presence) do |f| %> 
2: <% if @presence.errors.any? %> 
3:  <div id="error_explanation"> 
4:  <h2><%= pluralize(@presence.errors.count, "error") %> prohibited this presence from being saved:</h2> 

Burada sorun nedir? Asla "model_adı" adlı bir yöntemi aramadım ve bu kod otomatik, o zaman neden çalışmıyor?

Teşekkür

cevap

20

deneyin formu render edilir new veya diğer ilgili eylem senin presences_controller bu ekleme:

#presuming your model is called Presence 
@presence = Presence.new 
+2

Teşekkür ederim, bu işe yarıyor. Ben hala RoR nasıl çalıştığını anlamaya çalışıyorum, ancak bu hata mesajları çok yararlı değildir .. – Bv202

+0

Arayanın bağlayıcı ve daha iyi hataları gem kullanımı - hata ayıklama için pencerede bir konsol olsun. –

5

görünümü (ve form_for yöntemi) aslında gerçek Varlığını olmasını bekliyoruz @presence değişkeninde model. Bunun gibi bir @-değişkeni denetleyiciden geçirilir, bu da denetleyici eylemine ayarlamanız gerektiği anlamına gelir.

"Yeni" eylem durumunda - var olan bir Varlık nesnesine sahip değilsiniz ("show" dan farklı olarak) - bu nedenle boş, yeni bir tane ayarlamanız gerekir.

Form_for yöntemi aşağıdaki gibi bir Durum nesnesi alır ve: db'den mevcutsa, güncelleştirmek için doğru POST yolunu oluşturur. Ancak, yeni, boş bir tanesi, yeni bir tane oluşturmak için doğru rotayı oluşturacaktır.

Bu yardımcı olur umarım ...

İlgili konular