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
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!
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.
Bu örnekte sağlama özniteliklerini işlemek için yazabileceğim bir örnek var mı? – pappy
İç içe Form Alanları'nı kullanarak bir örnek eklerseniz size ödül vereceğim. – max