نماذج القضبان المتداخلة واستخدام label_tag و checkbox_tag وغيرها من وظائف form_tag

StackOverflow https://stackoverflow.com/questions/2153146

  •  23-09-2019
  •  | 
  •  

سؤال

في النماذج العادية في Ruby on Rails ، إذا كنت تستخدم Form_for لإنشاء نموذج ، كحالة مستندات API ، لا ينشئ Form_for نطاقًا حصريًا ، ومن الممكن استخدام وظائف form_tag ضمن نموذج form_for.

علي سبيل المثال:

<% form_for :person, @person, :url => { :action => "update" } do |f| %>
  First name: <%= f.text_field :first_name %>
  Admin?    : <%= check_box_tag "person[admin]", @person.company.admin? %>
<% end %>

ومع ذلك ، في شكل متداخل ، تحتوي الملصقات والحقول على أسماء يتم إنشاؤها تلقائيًا بواسطة Rails لتترافق مع نموذج متداخل معين وليس التداخل إذا تم إنشاء نماذج متداخلة متعددة في وقت واحد. هل من الممكن استخدام وظائف form_tag؟

أود أن أفعل شيئًا كهذا:

<% person_form.fields_for :children do |child_form| %>
Name: <%= child_form.text_field :name %>

Give up for Adoption?: <%= check_box_tag "adoption_" + child_form_index, false %>
<% end %>

ومع ذلك ، لا أعرف كيفية الوصول إلى فهرس child_form للتأكد من أن conct_box_tag له قيمة فريدة إذا كان هناك العديد من الأطفال.

هل ما أحاول القيام به ممكن؟

هل كانت مفيدة؟

المحلول

انظر مستندات ل fields_for تحت شخص واحد.

يبدو لي كما لو كنت فقط يمكنك استخدامه each (أو each_with_index) وتمرير متغير الكتلة جنبا إلى جنب مع الرمز:

   <% form_for @person, :url => { :action => "update" } do |person_form| %>
    ...
    <% @person.children.each_with_index do |child, index| %>
        <% person_form.fields_for :children, child do |children_fields| %>
          Name: <%= children_fields.text_field :name %>
         Give up for Adoption?: <%= check_box_tag "adoption_" + index, false %>
        <% end %>
    <% end %>
  <% end %>

بالطبع ، سيكون عليك التعامل مع تسجيل الدخول إلى "عرض التبني" بنفسك.

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