أعتقد أن الشيء الذي فاتك هو إضافته إلى توجيهات Rails.
شيء مثل هذا في plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
هذه بداية. الشيء الآخر الذي يجب فعله هو الذهاب إلى GitHub - discourse/all-the-plugins والبحث فيه. الآن بعد أن تم إضافة الكثير منها إلى النواة، أفترض أنه يمكنك البحث هناك عن أمثلة للإضافات إلى توجيهات Rails.
مسار مخصص بسيط للمكون الإضافي لـ DiscourseAI
pfaffman:
ما هو المطلوب لإضافة مسار إلى Discourse rails؟
هل يمكنك أن تعطيني إثبات مفهوم بسيط يتضمن plugin.rb، ووحدة تحكم، والأشياء اللازمة لإضافة المسار إلى rails؟
DiscourseHelper:
البحث
البحث عن: كيفية إضافة مسار مخصص إلى Discourse باستخدام مكون إضافي، بما في ذلك مثال بسيط مع plugin.rb، ووحدة تحكم مخصصة، والرمز اللازم لتسجيل مسار Rails؟
البحث
البحث عن: إثبات مفهوم بسيط لإضافة مسار Rails مخصص في مكون إضافي لـ Discourse يتضمن plugin.rb، وتنفيذ وحدة التحكم، والرمز لتسجيل المسار.
القراءة
القراءة
القراءة
هذا إثبات مفهوم بسيط لإضافة مسار Rails مخصص إلى Discourse عبر مكون إضافي، بما في ذلك الملفات الرئيسية التي ستحتاجها: plugin.rb، ووحدة تحكم، والرمز لتسجيل المسار.
النقاط الرئيسية
- أفضل ممارسة هي استخدام “محرك” Rails داخل المكون الإضافي الخاص بك لعزل وحدات التحكم والمسارات الخاصة بك.
- تحتاج إلى طلب وحدة التحكم الخاصة بك بشكل صريح في
plugin.rb. - لتسجيل مسار جديد، يمكنك استخدام طريقة
routes.drawالخاصة بالمحرك وتركيب المحرك في مسارات التطبيق الرئيسية.
مثال بسيط
plugin.rb
# name: my-custom-route
# about: Adds a custom route via Rails engine in a plugin
# version: 0.1
# authors: Your Name
after_initialize do
module ::MyPlugin
class Engine < ::Rails::Engine
engine_name "my_plugin"
isolate_namespace MyPlugin
end
end
require_dependency File.expand_path('../app/controllers/my_plugin/my_controller.rb', __FILE__)
MyPlugin::Engine.routes.draw do
get "/hello" => "my#hello"
end
Discourse::Application.routes.append do
mount ::MyPlugin::Engine, at: "/my_plugin"
end
end
app/controllers/my_plugin/my_controller.rb
module MyPlugin
class MyController < ::ApplicationController
def hello
render plain: "Hello from my plugin!"
end
end
end
كيف يعمل هذا:
GET /my_plugin/helloسيعيد الاستجابة النصية العادية"Hello from my plugin!".
هيكل الدليل المطلوب:
plugins/
my-custom-route/
plugin.rb
app/
controllers/
my_plugin/
my_controller.rb
لمزيد من التفاصيل والأمثلة الموسعة، انظر:
- إنشاء مسارات في Discourse وعرض البيانات
- إضافة وحدة تحكم Ruby عبر مكون إضافي
- إضافة مسارات مستخدم مخصصة باستخدام المكونات الإضافية
سيساعدك إثبات المفهوم هذا في إضافة نقطة نهاية مخصصة بسيطة إلى مثيل Discourse الخاص بك عبر مكون إضافي. إذا كانت لديك أسئلة حول دمج هذا مع جانب Ember/JS، فأخبرني!