Ao seguir o tutorial para configurar um controlador personalizado e rota, recebo a página de Erro de Roteamento. A página lista os caminhos e controladores, o que está tudo correto, no entanto, quando solicito o recurso, recebo erros. Entendo que este é um tutorial antigo, mas as informações estão precisas? Anexei o esqueleto do meu plugin e talvez alguém possa ajudar a solucionar o problema. Obrigado!
Acho que o que você está perdendo é adicioná-lo ao roteamento do Rails.
Algo como isto em plugin.rb.
JbTest::Engine.routes.draw do
get "/hello" => "jbtest#index"
end
Aqui está um começo. A outra coisa a fazer é acessar GitHub - discourse/all-the-plugins e dar uma olhada lá. Agora que tantos foram adicionados ao core, no entanto, suponho que você possa apenas olhar lá para exemplos de como adicionar ao roteamento do Rails.
Plugin de Rota Personalizada Mínima para DiscourseAI
pfaffman:
o que é necessário para adicionar uma rota ao Discourse rails?
Você pode me dar uma prova de conceito mínima que inclua um plugin.rb, um controlador e as coisas necessárias para adicionar a rota ao rails?
DiscourseHelper:
Pesquisando
Pesquisando por: Como adicionar uma rota personalizada ao Discourse usando um plugin, incluindo um exemplo mínimo com plugin.rb, controlador personalizado e o código necessário para registrar a rota Rails?
Pesquisando por: Prova de conceito mínima para adicionar uma rota Rails personalizada em um plugin do Discourse, incluindo plugin.rb, implementação do controlador e código para registrar a rota.
Aqui está uma prova de conceito mínima para adicionar uma rota Rails personalizada ao Discourse por meio de um plugin, incluindo os arquivos principais que você precisará: plugin.rb, um controlador e o código para registrar a rota.
Pontos Chave
A melhor prática é usar um “engine” Rails dentro do seu plugin para isolar seus controladores e rotas.
Você precisa exigir explicitamente seu controlador em plugin.rb.
Para registrar uma nova rota, você usa o método routes.draw do engine e monta o engine nas rotas principais da aplicação.
Exemplo Mínimo
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
Como isso funciona:
GET /my_plugin/hello retornará a resposta de texto simples "Hello from my plugin!".
Esta prova de conceito ajudará você a adicionar um endpoint personalizado simples à sua instância do Discourse por meio de um plugin. Se você tiver dúvidas sobre a integração disso com o lado Ember/JS, me avise!
OK. Obrigado. Parece que esse trecho de código foi adicionado ao routes.rb, mas vou verificar os plugins principais e ver se consigo encontrar um exemplo no plugins.rb. Obrigado!