خلق نماذج البيانات العلائقية في القضبان
-
22-07-2019 - |
سؤال
ولقد شكل أنني بحاجة إلى عرض للجدول الذي لديه علاقة مع اثنين من الجداول الأخرى. على سبيل المثال، لدي الطاولة "الحالات" (اعتقد، حالة محقق)، أن المدعي has_one والعميل has_one.
وأود النموذج لعرض حقول لملء للبيانات الحالة، بيانات العملاء وبيانات المدعي. هل هناك طريقة سهلة للقيام بذلك حتى أنه عندما قدم ذلك، فإنه سيكون بسيطا مثل:
case = Case.new(params[:case])
case.save
وكما أنه سيكون إذا كنت مجرد تقديم وتوفير نموذج للبيانات حالة فقط؟
المحلول
ويبدو وكأنه كنت تبحث عن طريقة accepts_nested_attributes_for
من أكتيفيريكورد. سوف تحتاج إلى صياغة النموذج الخاص بك باستخدام
- form.fields_for :claimant do |claimant_form|
= claimant_form.text_field :name
ويمكنك أن تجد المزيد من المعلومات في <لأ href = "http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes" يختلط = " نوفولو noreferrer "> ريان ديغل] في بلوق وظيفة
نصائح أخرى
لا أعتقد أن هناك وسيلة حيث يمكنك مجرد دعوة case.save وانه سوف يعمل.
لجعل النموذج، والنظر في استخدام fields_for. http://api.rubyonrails.org/classes/ActionView/Helpers/ FormHelper.html # M001605
وfields_for يسمح لك بإضافة الحقول التي يتم تخزينها في متغيرات ما بعد مختلفة، لذلك إذا قمت بإعداد الحقول بشكل صحيح ثم في طريقة الجديد الخاص بك هل يمكن أن يحتمل تفعل شيئا مثل هذا:
claimant = Claimant.new(params[:claimant])
claimant.save
وهي ليست رهيبة أكثر تعقيدا.
-شكل أمثلة معقدة على خلق متداخلة متعددة أشكال -model. تم تحديث هذا العمل مع accepts_nested_attributes_for
القضبان 2.3 في.
وانها تسمح لك لعش الجمعيات كلها تحت params[:case]
وكأنك تريد. عند استدعاء case.save
كل شيء آخر سوف يتم حفظها أيضا.