سؤال

ولقد شكل أنني بحاجة إلى عرض للجدول الذي لديه علاقة مع اثنين من الجداول الأخرى. على سبيل المثال، لدي الطاولة "الحالات" (اعتقد، حالة محقق)، أن المدعي 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 كل شيء آخر سوف يتم حفظها أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top