2011-02-09 16 views
5

Son zamanlarda, Ruby On Rails uygulamasında tüm users listelemeyi istedim, çünkü başka bir şekilde nasıl listeleyeceğimi anlayamadım. Kısmi kullanmaya karar verdim. benim yönetim sayfasında aşağıdaki sahiptir (sadece bir kendi yönetim denetleyicisi bağladım):Ruby On Rails - "undefined method" id "4: Fixnum"

<%= render :partial => User.find(:all) %> 

o zaman benim kullanıcıları klasörü görüntülemek içinde _user.html.erb adlı bir dosya var.

<ul> 
<% div_for @user.object_id do %> 
    <li><%= link_to user.username, user.username %></li> 
<% end %> 
</ul> 

uygulamasının çalıştığı ve yönetim sayfasına gidin, ben olsun aşağıdaki hatayı:

undefined method `id' for 4:Fixnum

O kısmi içinde olan (çünkü bu hattın söylüyor Bu aşağıdakileri içerir dosyası):

<% div_for @user.object_id do %> 

Böyle (ve denemek ve sonuçları bulmak ve sadece benim için işe yaramayan çözümler) bulmaya saatlerce googled var yüzden ben emin değilim. Ben @user örnek değişkeni kullanımı ile ilgili bir şey olduğunu düşünüyorum, ama tamamen emin değilim.

cevap

8

div_for etkin bir kayıt nesnesini id yöntemini çağıran argüman olarak beklediği için bu hatayı alıyorsunuz. Etkin bir kayıt nesnesi olmayan ve id yöntemine sahip olmayan bir fixnum (@user.object_id sonucu) iletirsiniz.

@user.object_id yerine @user girin ve işe yarayacaktır.

Ayrıca @user yerine user kullanmalısınız, raylar 3 artık kısmi örneklem değişkenlerini ayarlamaz.

+0

ait

@item.unit_of_measure.name 

hata alıyorum: "nil için id denilen, yanlışlıkla 4 olacak - Eğer gerçekten nil id istiyorsa, Object_id kullanmak" –

+0

@ Joesavage1: Eğer rayları 3 kullanıyorsanız, '@ user' yerine' user 'kullanmanız gerekir (eğer değilseniz, 'user' kullanmalısınız, çünkü bu şekilde herhangi bir ray versiyonunda çalışacaktır). – sepp2k

+1

Çok teşekkürler! "@ User" yerine "user" kullanılması bir işlem yapar! : D –

0

.object_id bölümünü kaybedin. Ciddi olarak neden object_id kullanıyorsunuz diye düşünemiyorum! Bunu yapmak için iyi bir nedeniniz var mı? Her neyse div_for bir nesnenin etrafında bir div sarar, böylece .object_id kısmını bırakın!

+0

@user Kullanarak şu hatayı alıyorum: "Nil için kimliği aranan, yanlışlıkla 4 olurdu - eğer gerçekten nil kimliğini istiyorsan, object_id kullan" –

+0

@ user, nil. @user instance değişkenini ayarlamak için kontrol cihazınızı tekrar kontrol edin.Sanırım @user 'nin nil olmasını istemiyorsun :) – Gerry

+0

Kullanıcı kısmi olduğu için - bunun ne yaptığını zaten biliyordum. Kullanıcılar arasında geçiş yapmak istediğimden beri, mutlaka her bir kullanıcının ne olduğunu biliyor mu? Bir denetleyiciye bir şey eklemem gerekirse - denetleyicide (kullanıcı veya yönetim) –

0

nesnesi yerine kullandığınız sütun veya vize varsa o zaman bu tür bir hata alırsınız.

Örnek I id yerine kullanıcı = User.first nesnesi kullanıyorum

.

0

Bunu deneyin, benim için çalıştı. yerine @user kullanma

@item.unit_of_measure_id.name