# Controladores e Rotas

**URL:** https://meta.discourse.org/t/controllers-and-routes/376468
**Category:** Development
**Created:** [Julho 29, 2025, 7:11pm UTC](https://meta.discourse.org/t/controllers-and-routes/376468 "2025-07-29T19:11:24Z")
**Posts on this page:** 1
**Showing post:** 2

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [Julho 29, 2025, 8:25pm UTC](https://meta.discourse.org/t/controllers-and-routes/376468/2 "2025-07-29T20:25:52Z")

</div>

Acho que o que você está perdendo é adicioná-lo ao roteamento do Rails.

Algo como isto em `plugin.rb`.

```plaintext
  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](https://github.com/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?
> 
>  
> 
> > **Lendo**
> >
> > Lido: [Desenvolvendo Plugins do Discourse - Parte 1 - Crie um plugin básico](https://meta.discourse.org/t/developing-discourse-plugins-part-1-create-a-basic-plugin/30515)
> 
>   
> 
> > **Pesquisando**
> >
> > 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.
> 
>   
> 
> > **Lendo**
> >
> > Lido: [Criando Rotas no Discourse e Exibindo Dados](https://meta.discourse.org/t/creating-routes-in-discourse-and-showing-data/48827)
> 
>   
> 
> > **Lendo**
> >
> > Lido: [Adicionar rotas de usuário personalizadas usando plugins](https://meta.discourse.org/t/add-custom-user-routes-using-plugins/102620)
> 
>   
> 
> > **Lendo**
> >
> > Lido: [Adicionando um controlador ruby via plugin](https://meta.discourse.org/t/adding-a-ruby-controller-via-plugin/60661)
> 
>   
> 
> 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**
> 
>  
> 
> ```ruby
> # 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**
> 
>  
> 
> ```ruby
> 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!"`.
> 
>  
> 
> **Estrutura de Diretório Necessária:**
> 
>  
> 
> ```plaintext
> plugins/
> my-custom-route/
> plugin.rb
> app/
> controllers/
> my_plugin/
> my_controller.rb
> 
> ```
> 
>  
> 
> **Para mais detalhes e exemplos expandidos, veja:**
> 
>  
> - [Criando Rotas no Discourse e Exibindo Dados](https://meta.discourse.org/t/creating-routes-in-discourse-and-showing-data/48827)
> - [Adicionando um controlador ruby via plugin](https://meta.discourse.org/t/adding-a-ruby-controller-via-plugin/60661)
> - [Adicionar rotas de usuário personalizadas usando plugins](https://meta.discourse.org/t/add-custom-user-routes-using-plugins/102620)
> 
>  
> 
> 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!

---

_[View the full topic](https://meta.discourse.org/t/controllers-and-routes/376468)._
