8

2 modelim var, yerler ve alanlar (alanlar, kimlik ve ad alanlarından oluşur). Bunlar birbirleriyle ilişkilidir: Bir alanın birçok yeri vardır ve her mekan bir bölgeye aittir.İlgili veritabanı için bir Rails açılır menüsü oluşturma

Bir alana bir mekan atamak için, şu anda alan_id numarasını yeni mekan oluşturma sayfasındaki bir metin alanına giriyorum. Sonra mekan ile ait olduğu alan gösterebilir: Yerine şeklinde alanın kimlik numarasını girin zorunda

<%= venue.area.name %> 

Bütün alan kayıtlar için alan adlarını listeleyen bir açılır menü istiyorum ve Seçilen kişi için bu mekanla ilgili olarak kaydedilecek.

yeni mekan formu: ben denedim

<% form_for @venue do |f| %> 
    <p>name: <br> 
    <%= f.text_field :name %></p> 

    <p>address line 1: <br> 
    <%= f.text_field :addressline1 %></p> 

    <p>address line 2: <br> 
    <%= f.text_field :addressline2 %></p> 

    <p>address line 3: <br> 
    <%= f.text_field :addressline3 %></p> 

    <p>area_id: <br> 
    <%= f.text_field :area_id %></p> 

    <%= submit_tag %> 
<% end %> 

:

<p>area_id: <br> 
    <%= collection_select(:area, :name, @areas, :id, :name) %> 

Ama olsun: Eğer bunu beklemiyorduk yaptığında

Bir nil nesne var!
Array öğesinin bir örneğini bekleyebilirsiniz.

Herhangi bir yardım çok takdir edilir

nil.map değerlendirirken
hata oluştu!

cevap

29

@areas tanımlanmamış ve belki de birkaç başka sorun gibi görünüyor. Bu deneyin: aNoble söylediği gibi

<%= f.collection_select(:area_id, Area.all, :id, :name) %> 
+0

Fantastik, işe yarıyor! Hızlı cevap için çok teşekkürler! – Dave

0

, bu doğru! Adından sipariş vermek isterseniz, aşağıdakileri kullanın:

<%= f.collection_select :area_id, Area.order(:name), 
    :id, :name %> 
İlgili konular