سؤال

أحاول تنفيذ نماذج كائنات متداخلة لموقعي، باستخدام منشور مدونة 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, ويعمل بشكل رائع.

اسمحوا لي أن أعرف ما إذا كان يعمل، وبمجرد أن أتمكن من متابعة البرنامج التعليمي، قد أضطر إلى تعديله

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