سؤال

أنا أكتب تطبيقا صغيرا يستند إلى Sinatra وأود أن يتمكن كل منظر من إدراج عناصر مختلفة في التصميم، على سبيل المثال الصفحة title أو إضافية CSS / جافا سكريبت المراجع في head.

يشبه تخطيطي (ERB) حاليا (مبسط):

<html>
<head>
    <title>Hard Coded Title Here</title>
    <link rel="stylesheet" ... />
</head>
<body>
    <h1>Hard Coded Title Here</h1>
    <div id="content">
        <%= yield %>
    </div>
</body>
</html>

بدلا من وجود عنوان و CSS / JS مراجع بجد مشفرة، أود تحقيق شيء ما على طول هذه الخطوط:

<html>
<head>
    <title><%= yield :title %></title>
    <link rel="stylesheet" ... />
    <%= yield :more_head_refs %>
</head>
<body>
    <h1><%= yield :title %></h1>
    <div id="content">
        <%= yield %>
    </div>
</body>
</html>

وكن قادرا على تحديد المحتوى لتلك الكتل من داخل كل عرض.

هل هذا ممكن، وإذا كان الأمر كذلك كيف سأذهب في القيام بذلك؟

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

المحلول

توصلت إلى هذه المسألة في Railscamp مؤخرا وحسن اللحظ أن تيم لوكاس كان قادرا على الإشارة إلي إلى شيء شوه وعمل عليه سيناترا المحتوى-ل. وبعد هذا سيغطي ما تحتاجه.

نصائح أخرى

لقد وجدت أن هذا هو الحل الأكثر قوة لوظيفة "محتوى القضبان" على طراز القضبان في Sinatra، خاصة إذا كنت تستخدم قوالب ERB بدلا من HAML:

http://github.com/kematzy/sinatra-outputbuffer.

يمكنك فقط استخدام Stylesheet في ملف Ruby الخاص بك

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