العروض والتصيير
إرجاع الاستجابات
العروض والتصيير درس مجاني في Ruby Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Ruby Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ما العرض؟
العرض هو قالب ينتج الاستجابة المُرسلة إلى العميل، وعادةً ما تكون بصيغة HTML. وهو يحوّل البيانات التي أعدّها المتحكّم إلى صفحة.
- توجد العروض في
app/views. - تُجمّع حسب المتحكّم، مثل
app/views/articles. - يطابق اسم القالب الافتراضي اسم الإجراء.
التصيير المعتمد على الاصطلاح
يعرض الإجراء افتراضيًا القالب الذي يحمل اسمه. فالإجراء index في ArticlesController يصيّر app/views/articles/index.html.erb من دون استدعاء صريح لـ render.
def index
@articles = Article.all
# automatically renders articles/index.html.erb
endقوالب ERB
لغة القوالب الافتراضية هي ERB (Embedded Ruby). وهي تخلط HTML مع Ruby:
- تُخرج
<%= ... %>قيمةً. - تنفّذ
<% ... %>تعليمات برمجية من دون إخراج.
<h1>Articles</h1>
<% @articles.each do |article| %>
<p><%= article.title %></p>
<% end %>التخطيطات
يحيط التخطيط بكل عرض بعلامات مشتركة مثل الترويسة والتنقّل والتذييل. ويتضمن app/views/layouts/application.html.erb الافتراضي <%= yield %>، حيث يُدرج عرض الإجراء.
<!-- application.html.erb -->
<html>
<body>
<%= yield %>
</body>
</html>القوالب الجزئية
القالب الجزئي هو جزء قابل لإعادة الاستخدام من قالب، يبدأ اسم ملفه بشرطة سفلية. صيّروه باستخدام render لتجنّب تكرار العلامات.
<!-- _article.html.erb -->
<p><%= article.title %></p>
<!-- in index.html.erb -->
<%= render "article", article: @article %>تصيير المجموعات
يؤدي تمرير مجموعة إلى render إلى تصيير القالب الجزئي مرةً لكل عنصر، وهو اختصار شائع في Rails. ويستنتج Rails اسم القالب الجزئي من النموذج.
<%= render @articles %>
<!-- renders _article.html.erb for each article -->مساعدات العروض
يوفّر Rails مساعدات تنشئ HTML بأمان: استخدموا link_to للروابط، وform_with للنماذج، وimage_tag للصور. وهي تحافظ على نظافة القوالب واتساقها.
<%= link_to "View", article_path(@article) %>
<%= image_tag "logo.png" %>الاستجابة بتنسيقات أخرى
يمكن للمتحكّمات إعادة ما هو أكثر من HTML. يرسل render json: JSON لواجهات API، بينما يقدّم respond_to تنسيقات مختلفة بناءً على ما طلبه العميل.
def show
@article = Article.find(params[:id])
render json: @article
endكتل respond_to
استخدموا respond_to لمعالجة تنسيقات متعددة في إجراء واحد. ويمكن للإجراء نفسه إعادة HTML إلى متصفح وJSON إلى عميل API.
def show
@article = Article.find(params[:id])
respond_to do |format|
format.html
format.json { render json: @article }
end
endرموز الحالة
اضبطوا حالة HTTP في الاستجابة باستخدام status:. استخدموا :ok (200)، و:created (201) بعد نجاح الإنشاء، و:unprocessable_entity (422) عند فشل التحقق، حتى يتصرف العملاء بصورة صحيحة.
render :new, status: :unprocessable_entity
render json: @article, status: :createdالهروب والأمان
يُجري ERB هروبًا تلقائيًا لمخرجات HTML في <%= %>، مما يمنع البرمجة النصية عبر المواقع الناتجة عن بيانات المستخدم. لا تضعوا علامة المحتوى على أنه آمن باستخدام raw أو html_safe إلا إذا كنتم تثقون به تمامًا؛ فسوء استخدامهما يعيد فتح ثغرات XSS.
اختبار سريع
اختبروا فهمكم للعروض والتصيير.
مراجعة: العروض والتصيير
تعلّمتم كيفية إعادة الاستجابات:
- تُصيّر الإجراءات عرض ERB المطابق وفقًا للاصطلاح.
- تحيط التخطيطات بالعروض، وتعيد القوالب الجزئية استخدام الأجزاء.
- تنشئ المساعدات مثل
link_toوform_withHTML. - يقدّم
render json:وrespond_toواجهات API؛ فاضبطوا رموز الحالة المناسبة. - يُجري ERB هروبًا للمخرجات لمنع XSS.
بهذا تكتمل دورة المتحكّمات والتوجيه.
الأسئلة الشائعة
هل درس «العروض والتصيير» مجاني؟
نعم — نص درس «العروض والتصيير» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Ruby Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Ruby Academy 4 دروس في المجموع.
ماذا ستتعلم في «العروض والتصيير»؟
إرجاع الاستجابات تتمرن على Ruby Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Ruby Academy؟
لا تُشترط خبرة سابقة. Ruby Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.
كم من الوقت يستغرق درس «العروض والتصيير»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Ruby Academy هذا؟
نعم. كل درس في Ruby Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المسارات والموارد
- وحدات التحكم والإجراءات
- المعلمات القوية
- العروض والتصيير