2012-09-03 5 views
16

Kullanıcılarım için daha az acı veren ilişkili modeller oluşturma işlemini gerçekleştirmem gerektiğini kendi özel görünümümden yapıyorum. İlgili tüm parçaları on-line olarak görüntülemek ve bunları düzenlemek için kontroller yapmak istiyorum. Bu, temel alanlar için kendi başımı açmak için oldukça kolaydır, ancak satır içi modelin ilişkilendirmeleri için bir form_filtering_select kısmi kullanmayı tercih ederim, ancak bunu yapmak için hiçbir belge bulamıyorum.Özel görünümlerde rails_admin formlarını kullanın?

cevap

0

Orada ne istediğinizi yapan harika bir mücevher var. Buna Nested Form Fields denir. Kayıtları (has_many ilişkilendirmeleriyle birlikte) tek bir sayfada düzenlemenizi sağlar. Bunun en güzel yanı, sayfa yeniden yüklemesi olmadan dinamik olarak form alanlarını eklemek/kaldırmak için jQuery'yi kullanmasıdır. Doğru kullanım için mücevherleri docs dışarı çekin. Umarım yardımcı olur!

+0

İç içe Form Alanları'nı kullanarak bir örnek eklerseniz size ödül vereceğim. – max

1

Sen Nested Form

projeler okuyucu yönteminden Proje örnekleri dizisi döndürür ve projects_attributes = yazar yöntemine yanıt veren bir kullanıcı sınıfı düşünün kullanabilirsiniz:

class User 
    def projects 
    [@project1, @project2] 
    end 

    def projects_attributes=(attributes) 
    # Process the attributes hash 
    end 
end 

Not olduğunu projects_attributes = yazar yöntem doğru bir şekilde tanımlamak için alanlar için gereklidir: bir koleksiyon olarak projeler ve form işaretlemede ayarlanacak doğru endeksler.

projeleri sizin için yazar yöntemini tanımlamak için accepts_nested_attributes_for kullanabilirsiniz User bir dernek zaten:

class User < ActiveRecord::Base 
    has_many :projects 
    accepts_nested_attributes_for :projects 
end 

Bu model artık iç içe fields_for ile kullanılabilir. İç içe fields_for çağrısına verilen blok koleksiyonunda her örneği için tekrarlanacaktır:

<%= nested_form_for @user do |user_form| %> 
    ... 
    <%= user_form.fields_for :projects do |project_fields| %> 
    <% if project_fields.object.active? %> 
     Name: <%= project_fields.text_field :name %> 
    <% end %> 
    <% end %> 
    ... 
<% end %> 

İşte detaylar için Reference gider.

+0

Bu örnekte sağlama özniteliklerini işlemek için yazabileceğim bir örnek var mı? – pappy