إدارة الواجهة الخلفية في روبي أون ريلز
-
01-07-2019 - |
سؤال
أرغب في إنشاء واجهة خلفية إدارية سريعة وقذرة لتطبيق Ruby on Rails الذي تم إرفاقي به في اللحظة الأخيرة.لقد ألقيت نظرة على activescaffold والمبسطة وأعتقد أنهما جذابان للغاية ويجب أن يكونا سهلين للتشغيل، لكنني لا أفهم تمامًا كيفية إعداد أي منهما كصفحة إدارة خلفية.يبدو أنها مصممة للعمل مثل مولدات/سقالات Ruby on Rails القياسية لإنشاء واجهات أمامية مرئية مع مراسلات اسم جدول عرض النموذج والتحكم.
كيف يمكنك إنشاء واجهة admin_players عندما تكون المشغلات قيد الاستخدام بالفعل وتريد تجنب التأثير قدر الإمكان على أي من الملفات المرتبطة بها؟
لا يمكن للمسؤول عرض المصدر الأصلي وتحريره وفهرسته.
المحلول
أعتقد أن مساحات الأسماء هي الحل للمشكلة التي تواجهها هنا:
map.namespace :admin do |admin|
admin.resources :customers
end
والتي سوف تخلق الطرق admin_customers
, new_admin_customers
, ، إلخ.
ثم داخل app/controller
الدليل الذي يمكنك الحصول عليه admin
الدليل.داخل دليل المسؤول الخاص بك، قم بإنشاء وحدة تحكم المسؤول:
./script/generate rspec_controller admin/admin
class Admin::AdminController < ApplicationController
layout "admin"
before_filter :login_required
end
ثم قم بإنشاء وحدة تحكم عملاء المشرف:
./script/generate rspec_controller admin/customers
واجعل هذا يرث من وحدة التحكم في التطبيقات الخاصة بك:
class Admin::CustomersController < Admin::AdminController
سيبحث هذا عن وجهات النظر في app/views/admin/customers
وسوف نتوقع تخطيط في app/views/layouts/admin.html.erb
.
يمكنك بعد ذلك استخدام أي مكون إضافي أو رمز ترغب فيه للقيام فعليًا بإدارتك، وتبسيطها، وActiveScaffold، وأي شيء أحب استخدامه شخصيًا resourcecs_controller
, ، لأنه يوفر عليك الكثير من الوقت إذا كنت تستخدم ملف استراحة هندسة الأسلوب، وإجبار نفسك على السير في هذا الطريق يمكن أن يوفر الكثير من الوقت في مكان آخر.على الرغم من أنك إذا ورثت التطبيق، فهذه نقطة خلافية الآن.
نصائح أخرى
تحقق من active_admin في https://github.com/gregbell/active_admin.
لقد استخدمت تبسيطها على نطاق واسع جدا.
لكي يعمل Streamline، عليك إنشاء وحدات التحكم الخاصة بك - حتى تتمكن فعليًا من تشغيله بشكل منفصل تمامًا عن بقية التطبيق الخاص بك، ويمكنك حتى تشغيله في مجلد "admin" منفصل ومساحة اسم يمكن تأمينها باستخدام .
فيما يلي وحدة تحكم العملاء من تطبيق حديث:
class CustomersController < ApplicationController
layout 'streamlined'
acts_as_streamlined
Streamlined.ui_for(Customer) do
exporters :csv
new_submit_button :ajax => false
default_order_options :order => "created_at desc"
list_columns :name, :email, :mobile, :comments, :action_required_yes_no
end
end