القضبان تصميم لوحة أجهزة القياس:واحدة تحكم العمل في شعبة

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

سؤال

انا تنفيذ لوحة قريب القضبان مبتدئ (أكثر من البنية التحتية الرجل).لوحة تتكون من عدة صفحات كل صفحة منها تحتوي على العديد من الرسوم البيانية/طاولات/الخ.عن نمطية ، أريد أن يكون سهلا كما يمكن إضافة خرائط جديدة أو تغيير آراء البيانات.

يقول صفحة واحدة 5 والرسوم البيانية المختلفة.أنا يمكن أن يكون وحدة تحكم 5 بيانات منفصلة عمليات البحث ، عقد كل البيانات ذات الصلة في المتغيرات سبيل المثال ، وتجعل 5 جزئيات كل من لمس مجموعات فرعية من البيانات.ولكن يبدو أكثر وحدات واحد "مؤشر" تحكم العمل التي تجعل لديه مجموعة من divs و لكل div هناك تحكم العمل الذي لا بيانات البحث و مقترن إطلالة جزئية المسؤول عن إدارة عرض هذه البيانات داخل div.

حتى إذا أنا يظهر الموقع لوحة الصفحات التي لديها اثنين من الرسوم البيانية ، website/index استخدام website/graph1 و website/graph2 للبحث عن البيانات لكل ثم _graph1.html.erb و _graph2.html.erb استخدام وحدة تحكم البيانات إلى ملء divs "graph1" و "graph2", ، وما إلى ذلك.

هذا التصميم المناسب, و إذا كان الأمر كذلك ، ما هي أسهل طريقة لتحقيق هذا الهدف ؟ لدي تقريبي باستخدام remote_function مع :action => "graph1" لملء divs, ولكن أنا لست 100 ٪ سعيدة معه.أنا أشك أنا في عداد المفقودين شيء أسهل من أن القضبان سوف تفعل بالنسبة لي.

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

المحلول

النسخة 1:

طريقة بسيطة التي كنت فعلا تستخدم في الإنتاج:نوافذ الأطر المدمجة.

معظم الوقت كنت في الواقع لا يهمني إذا كانت الصفحة يجعل كل شيء في مرة واحدة و مباشرة من الخادم ، والواقع أنه من الأفضل لتحميل متداخلة.

إذا كنت مجرد قطرة iframe src ان تحكم عرض العمل ، لديك حل بسيط جدا لا يتطلب المباشر عبر وحدة تحكم التفاعلات.

برو:

  • ميت سهلة
  • يعمل مع القائمة عرض الإجراءات الخ
  • بل قد يكون أسرع ، اعتمادا على المدخرات w/ الموازي مقابل متتابعة طلبات الذاكرة الحمل الخ

سلبيات:

  • لا يمكنك دائما بسهولة حفظ الصفحة مع أيا كان هو
  • نوافذ الأطر المدمجة و الخروج من الصفحة المضيفة جافا سكريبت مساحة ، حتى إذا كانت تتطلب ذلك ، قد تحتاج إلى إعطاء خاصة بهم الحد الأدنى من تخطيط ، كما أنها لن تكون قادرة على التأثير على صفحة المحيطة بها خارج الإطار
  • قد يكون أبطأ ، اعتمادا على الوقت بينغ الخ
  • المحتملة n+1 كفاءة علة إذا كان لديك العديد من هذه الوحدات على الصفحة

الإصدار 2:

تفعل الشيء نفسه باستخدام شبيبة يدعو إلى استبدال شعبة مع جزئية, à la:

<div id="placeholder">
<%= update_page {|page| page['placeholder'].replace with some partial call here } %>

نفس أعلاه, باستثناء:

برو:

  • لا قفل في iframe ، مما أسهم شبيبة السياق الخ
  • يسمح أفضل التعامل مع حالات الفشل

Con:

  • يتطلب JS نائبا divs;قليلا أكثر تعقيدا

الإصدار 3:

دعوة مجموعة كاملة من جزئيات.فإنه يحصل معقدة للقيام بذلك مرة كنت أتحدث عن أشياء مثل لوحات فيها الوحدات الفردية لديهم كميات كبيرة من الإعداد المنطق, ومع ذلك.

هناك العديد من الطرق للالتفاف على هذا من خلال جعل تلك الأشياء في mixins' أو ما شابه ذلك ، ولكن المنظمة البحرية الدولية إنهم نوعا ما kludgy.

ETA:طريقة للقيام بذلك عن طريق mixins هو خلق ما هو أساسا مكتبة الملفات التي تطبق الخاص بك وحدة تحكم برنامج الإعداد الوظائف تشمل أينما شيء يدعو عليهم استخدام الاتصال بهم.

ولكن هذا له عيوب:

  • عليك أن تعرف ما أعلى مستوى تحكم الإجراءات سيؤدي في الصفحات التي تشتمل تلك الوحدات النمطية (التي قد لا بسهولة ، إذا كانت هذه هي حقا widgety الأشياء التي قد تظهر في كل مكان ، على سبيل المثالتفضيل المستخدم تعتمد)
  • فإنه لا حقا بمثابة كاملة تحكم
  • فإنه لا يزال intermixes الكثير من المنطق حيث عقد شيء تحتاج لمعرفته حول الأشياء القابضة
  • لا يمكنك بسهولة قد تكون منفصلة في وحدة تحكم ، لأنه يجب أن يكون في مكتبة نوع الملف/mixin

فمن الممكن أن أساليب الدعوة في وحدة تحكم واحدة من وحدة تحكم أخرى.ومع ذلك ، فإنه رئيسيا ألم في مؤخرة و كبيرة الهمجية.المرة الوحيدة التي يجب أن تنظر في القيام بذلك إذا) انهم على حد سواء بشكل مستقل من الضروري التحكم في حقوقهم ، و ب) يجب أن تعمل كليا على النهاية الخلفية.

لقد كان القيام بذلك مرة واحدة في المقام الأول لأن إعادة بيع ديون سبب كان حتى أكثر من الألم و أعدك أنك لا تريد الذهاب إلى هناك إلا إذا كان لديك إلى.

ملخص

أفضل طريقة IMHO هو الأولى إذا كان لديك معقدة بما فيه الكفاية الأشياء التي تتطلب قدرا كبيرا من الإعداد بسيطة iframe الذي يعرض وحدة تمرير المعلمة أن أقول أن استخدام ultraminimalist تخطيط (فقط CSS+JS رؤوس) لأنه لا يتم عرض الصفحة الخاصة به.

هذا يسمح لك للحفاظ على الأشياء مستقلة تماما ، وظيفة أكثر أو أقل كما لو كانت طبيعية تماما تحكم من تلقاء نفسها (بخلاف إعداد تخطيط), الحفاظ على العادية والطرق ، الخ.

إذا كنت لا تحتاج إلى إعداد كبير ، ثم مجرد استخدام جزئيات و تمر في كل ما يحتاجون إليه حسب متغير محلي.هذا وسوف تبدأ في الحصول على هشاشة إذا قمت بتشغيل إلى أشياء مثل n+1 كفاءة البق ، على الرغم من...

نصائح أخرى

لماذا لا تعطي Apotomo المحاولة ، جليل الحاجيات القضبان:

البرنامج التعليمي كيفية بناء لوحة القيادة بسيطة

هل يمكن تحقيق هذا عن طريق استخدام

render_output = تقديم :العمل => "graph2"

ولكن لي شخصيا ربما التفاف التعليمات البرمجية في أي مشترك مساعد أو الكتابة كنت تملك "ليب" تحت دليل ليب إعادة استخدام رمز مشترك القالب.تذكر أن لم تغير من المسار الخاص بك.ملفات rb أي طريقة محددة يمكن الوصول إليها من قبل

/تحكم/العمل/:id

تذكر أيضا إلى إيقاف تخطيط الوظيفة :تخطيط => صفر (أو تحديد في الجزء العلوي من وحدة تحكم تخطيط "الرسم البياني", :باستثناء => ["graph2"]

هتافات

المسيحية

أنا لست على علم بأي القضبان الخاصة الحيل لتحقيق هذا دون استخدام اياكس في الطريقة التي أوردناها.

أبسط طريقة للحصول على نمطية كنت تسعى إلى وضع تلك الأجزاء من رمز وحدة تحكم في طرق منفصلة (على سبيل المثال set_up_graph1_data, set_up_graph2_data, ، الخ) ، والتي يمكنك ببساطة استدعاء من index العمل على إعداد متغيرات الرأي.

يمكنك وضع هذه الأساليب في ApplicationController إذا كنت تريد لهم المتاحة إلى وحدات تحكم متعددة.

كملاحظة جانبية, في وقت مبكر, القضبان هل كانت لدينا ميزة تسمى 'مكونات' التي من شأنها أن تسمح لك أن تفعل بالضبط ما تطلبه هنا دون الحاجة إلى استخدام اياكس.من وجهة نظرك أنت فقط يمكن أن تجعل آخر تحكم عمل مضمنة.غير أن هذه الميزة لم يتم الأداء و فلسفة التصميم الأسباب.

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