باستخدام الحقول من نموذج جمعية (HAS_MANY) مع formtastic في القضبان
-
25-09-2019 - |
سؤال
لقد بحثت وحاولت الكثير ، لكن لا يمكنني إنجازه كما أريد .. لذا هذه مشكلتي.
class Moving < ActiveRecord::Base
has_many :movingresources, :dependent => :destroy
has_many :resources, :through => :movingresources
end
class Movingresource < ActiveRecord::Base
belongs_to :moving
belongs_to :resource
end
class Resource < ActiveRecord::Base
has_many :movingresources
has_many :movings, :through => :movingresources
end
Movingresources
يحتوي على حقول إضافية ، مثل quantity
. نحن نعمل على وجهات نظر "بيل". بفضل Formtastic لتبسيط كل شيء العلاقة من خلال الكتابة فقط
<%= form.input :workers, :as => :check_boxes %>
وأحصل على قائمة مربعات اختيار حقيقية. لكن ما لم أكن قد اكتشفته حتى الآن هو: كيف يمكنني استخدام الحقول الإضافية من "MovingResource" ، التالي أو تحت كل مربع اختيار في الحقول المطلوبة من هذا النموذج؟
لقد رأيت طرقًا مختلفة ، وخاصةً مع حلق يدويًا من خلال مجموعة من الكائنات وإنشاء النماذج المناسبة ، باستخدام: في جزء. لكن لم يكن أي من هذه الحلول نظيفة (على سبيل المثال ، عملت في عرض التحرير ولكن ليس للجدد لأن الكائنات المطلوبة لم يتم بناؤها أو توليدها وتوليدها تسببت في فوضى).
أريد أن أعرف حلولك لهذا!
المحلول
حسنًا ، فاتني ثورة قبول_nted_attributes_for ، وهذا ما يفسر سبب عدم عمله حقًا.
هذا جعلني خطوة كبيرة إلى الأمام ، لكنني أعتقد أنه في مكان ما سأظل لدي بعض المضاعفات مع علاقاتي المعقدة ^_ ^
class Moving < ActiveRecord::Base
has_many :movingworkers, :dependent => :destroy
has_many :workers, :through => :movingworkers
accepts_nested_attributes_for :movingworkers
end
<% form.inputs :for => :movingworkers do |movingworker| %>
<%= movingworker.inputs :worker, :quantity %>
<% end %>
نصائح أخرى
FormTastic's: قد يساعد خيار label_method. على سبيل المثال
<%= form.input :movingworkers, :label_method => :worker %>
أو
<%= form.input :movingworkers, :label_method => Proc.new { |x| "#{x.worker} #{x.quantity}" } %>
إذا لم تكن الحقول موجودة في العرض الجديد ، فيمكنك فقط اختبار ما إذا كان جديدًا (رقم قياسي جديد؟) وتقديم مجموعة مختلفة من الحقول (إذا كنت تلتف في جزء في يمكن أن يكون نهجا نظيفا).