لماذا يبدو مساعد نموذج Rails وكأنه حلقة تنفيذ؟
-
20-12-2019 - |
سؤال
إليك سؤال كنت أنوي طرحه منذ فترة طويلة، لكنني قبلته للتو باعتباره "سحر ريلز" حتى هذه اللحظة.كما يوضح العنوان، لماذا يبدو مساعد نموذج Rails وكأنه حلقة تنفيذ؟إذا قمت بالتحقق من وثائق القضبان الرسمية, ، لا يبدو أنه يفسر ذلك، بل يتدخل مباشرة من خلال إعطاء ما يلي كمثال أساسي:
<%= form_tag do %>
Form contents
<% end %>
إذن ما الذي يحدث هنا بالضبط؟لماذا يبدو أن النموذج يقوم بإنشاء حلقة بدلاً من نماذج الإدخال باللغات الأخرى التي لا تحتوي على الحلقة المذكورة.
<%= form_for @person, url: {action: "create"} do |person_form| %>
<%= person_form.text_field :name %>
<%= fields_for @person.contact_detail do |contact_details_form| %>
<%= contact_details_form.text_field :phone_number %>
<% end %>
<% end %>
المحلول
هذا ليس "سحر ريلز" ، إنه بناء جملة فانيليا روبي تمامًا. do
/end
تشير إلى كتلة في روبي، وليس حلقة.
لا تشرح وثائق ريلز هذا، لأن وثائق ريلز تفترض معرفة روبي.لا تقدم ريلز أي بناء جملة جديد (ولا يمكنها ذلك)، إنها مجرد إطار عمل مكتوب بلغة روبي القديمة البسيطة بنسبة 100%.
نصائح أخرى
لأنه يأخذ حجة كتلة.
ليس لها أي علاقة بالتكرار، على سبيل المثال، File#open
كما يأخذ كتلة.
#open
ينتج الملف المفتوح.ال form_for
المساعد ينتج المساعد.