レールルーティングに追加することが足りない点だと思います。
plugin.rb に以下のような記述を追加します。
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
これはあくまで一例です。その他には、GitHub - discourse/all-the-plugins を見て、そこから学ぶこともできます。ただし、多くの機能がコアに追加された現在では、レールルートへの追加例はそちらで確認できると思います。
Discourse のカスタムルートプラグイン AI
pfaffman:
Discourse のレールにルートを追加するには何が必要ですか?
plugin.rb、コントローラー、およびレールルートへのルート追加に必要なものが含まれた、最小限の概念実証(Proof of Concept)を提供していただけますか?
DiscourseHelper:
検索
検索クエリ: Discourse プラグインを使用してカスタムレールルートを追加する方法。最小限の例(plugin.rb、カスタムコントローラー、ルート登録に必要なコードを含む)を含めて。
検索
検索クエリ: Discourse プラグインにカスタムレールルートを追加するための最小限の概念実証。plugin.rb、コントローラー実装、ルート登録コードを含む。
プラグインを介して Discourse にカスタムレールルートを追加するための、必要な主要ファイル(plugin.rb、コントローラー、ルート登録コード)を含む最小限の概念実証を以下に示します。
主なポイント
- ベストプラクティスとして、プラグイン内でレール「エンジン」を使用してコントローラーとルートを分離します。
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
詳細と拡張例については、以下を参照してください:
- Creating Routes in Discourse and Showing Data
- Adding a ruby controller via plugin
- Add custom user routes using plugins
この概念実証は、プラグインを介して Discourse インスタンスにシンプルなカスタムエンドポイントを追加するのに役立ちます。Ember/JS サイドとの統合について質問があれば、お知らせください!