2016-04-07 12 views
0

Rails formunun iç içe geçmiş özniteliğimde, bir sonraki tamsayıya sahip bir form için etiketi önceden doldurmak istiyorum (bu yüzden 1 girişi 1, giriş 2 # 2 olacaktır) . oldukça basit görünüyor, ama ben şöyle i+1 kullanarak başarılı olmamıştır:Prepopulate Rails Form alanı bir sonraki tamsayı değeriyle

<%= f.fields_for :points_allocations, PointsAllocation.new do |points, i| %> 
    <tr> 
     <td> 
     <%= points.label "points_#{i+1}" %> 
     <%= points.number_field :place, class: "form-control" %> 
     </td> 
    </tr> 
<% end %> 

Buna karşılık, ben nil için hata undefined method +' olsun: NilClass`.

Bu, benim için kafa karıştırıcıdır, çünkü bir önceki tam sayıya 1 eklemek için matematik mantığını uygulamak yerine neden bir yöntemi çağırdığını anlamıyorum.

Bu formu oluşturmak için daha iyi bir yol ne olurdu?

+0

Lütfen cevabımı kabul edin çünkü size yardımcı görünüyordu. Teşekkürler! – HashRocket

cevap

1

tamsayı i dönüştürmek deneyin:

<%= points.label "points_#{i.to_i+1}" %> 
+0

Çıldı. İyi yakalama. Bunu kontrol etmeliydim. – darkginger

+0

@darkginger, Lütfen cevabı kabul edin. Teşekkürler! – HashRocket

1

i Kodunuzdaki nil, dolayısıyla hatadır.

bu deneyin:

<%= f.fields_for :points_allocations, PointsAllocation.new do |points| %> 
    <tr> 
    <td> 
     <%= points.label "points_#{points.index + 1}" %> 
     <%= points.number_field :place, class: "form-control" %> 
    </td> 
    </tr> 
<% end %> 

kullandığınız Raylar hangi sürümünü?

İlgili konular