Minhas rotas personalizadas estão retornando dados JSON, mas eu quero renderizar um template Ember. Existe algum tópico que explique esse conhecimento? Muito obrigado.
ok, estudei o código de plugins/discourse-subscriptions e implementei aproximadamente o efeito desejado.
Acessar /q/hello exibe o conteúdo do template personalizado e obtém dados de backend personalizados.
Abaixo estão minhas etapas:
Crie um novo arquivo de mapeamento de caminho plugins/quectel/assets/javascripts/discourse/quectel-route-map.js
export default function quectel() {
this.route("q/hello"); // A rota é /q/hello por padrão
};
Crie um arquivo de rota plugins/quectel/assets/javascripts/discourse/routes/q/hello.js
import Route from "@ember/routing/route";
import { ajax } from "discourse/lib/ajax";
export default class HelloRoute extends Route {
model() {
return ajax('/q/hello') // Solicita a interface de backend para obter dados
}
}
Crie um arquivo de template frontend plugins/quectel/assets/javascripts/discourse/templates/q/hello.gjs, renderize os dados
import QHello from '../../components/q-hello'
<template>
<h1>q-hello</h1>
{{!-- Renderiza o componente --}}
<QHello />
{{!-- Renderiza os dados do modelo --}}
<div>{{@model.hello}}</div>
</template>
Crie um arquivo de controlador de backend plugins/quectel/app/controllers/quectel/examples_controller.rb
# frozen_string_literal: true
module ::Quectel
class ExamplesController < ::ApplicationController
requires_plugin PLUGIN_NAME
def hello
render json: { hello: "hello 2333" }
end
end
end
Defina a rota de backend plugins/quectel/config/routes.rb
# frozen_string_literal: true
Quectel::Engine.routes.draw do
get "/hello" => "examples#hello"
end
Discourse::Application.routes.draw { mount ::Quectel::Engine, at: "q" }
Ao acessar /q/hello, você verá a seguinte exibição: