ظهور مشاكل في حقول النماذج المتداخلة
-
03-07-2019 - |
سؤال
أحاول تنفيذ نماذج كائنات متداخلة لموقعي، باستخدام منشور مدونة Ryan Daigle كدليل (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes).لسبب ما، لا تظهر حقول النموذج المتداخلة في طريقة العرض.
class Instruction < ActiveRecord::Base
has_many :steps
accepts_nested_attributes_for :steps
end
class Step < ActiveRecord::Base
belongs_to :instruction
end
<% form_for @instruction do |instruction_form| %>
<%= instruction_form.error_messages %>
<p>
<%= instruction_form.label :title %><br />
<%= instruction_form.text_field :title %>
</p>
<p>
<%= instruction_form.label :difficulty %><br />
<%= instruction_form.text_field :difficulty %>
</p>
<% instruction_form.fields_for :steps do |step_form| %>
<%= step_form.label :explanation, 'Explanation: ' %>
<%= step_form.text_field :explanation %>
<% end %>
<p><%= instruction_form.submit "Submit" %></p>
<% end %>
عندما أتغير instruction_form.fields_for :steps do |step_form|
ل instruction_form.fields_for :step do |step_form|
, ، يتم عرض النموذج ولكن عند الإرسال، أحصل على "سمة غير معروفة:خطأ الخطوة.
يبدو أن ما أفعله يتوافق مع البرنامج التعليمي.ماذا يجب أن أتحقق؟شكرًا.
المحلول
ما الذي يحدث في وحدة التحكم الخاصة بك؟لم أقرأ البرنامج التعليمي بعد، ولا يبدو أنني أستطيع سحبه للأعلى الآن (للأسفل؟) ولكن هل تقوم ببناء كائن في الذاكرة لملءه؟
في وحدة التحكم الخاصة بك، في الإجراء "الجديد"، تأكد من أنك
@instruction = Instruction.new
@instruction.steps.build
سيؤدي هذا إلى إنشاء مثيل ل Step
في الذاكرة كـ "عنصر نائب" لنموذجك لملء ملف ...على الأقل هذا ما أفعله في وحدة التحكم الخاصة بي عند استخدام ملف accepts_nested_attributes_for
, ويعمل بشكل رائع.
اسمحوا لي أن أعرف ما إذا كان يعمل، وبمجرد أن أتمكن من متابعة البرنامج التعليمي، قد أضطر إلى تعديله