例:
api.addCommunitySectionLink({
name: "intersection-navigator",
route:"tags.intersection",
title: I18n.t("tag_intersection_navigator.link.title"),
text: I18n.t("tag_intersection_navigator.link.text")
})
… は、そのルートが tag_id を必要とするため失敗します。
次を追加しようとしました:
params: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
model: { tag_id: siteSettings.discourse_tag_intersection_navigator_all_word },
… しかし、これは api によって必要に応じて処理されない可能性が非常に高いです…
「いいね!」 4
具体的には、ここだと思います: discourse/app/assets/javascripts/discourse/app/lib/sidebar/custom-community-section-links.js at d0c3f3b8fe6905e7e33ae4944cdf44c11ccc0df6 · discourse/discourse · GitHub
これを追加すれば機能するはずです:
get models() {
return args.models;
}
「いいね!」 3
それと、typeof args === "function"という条件があるので、すぐに次のようなことができます。
api.addCommunitySectionLink((Base) =
class CustomLink extends Base {
get name() {
return "intersection-navigator";
}
get route() {
return "tag.show";
}
get models() {
return ["tagid"];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title");
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
}
);
「いいね!」 1
はい、それは私がすでにやっていることですが…プロセスの後半で面白いことがいくつかあります。
「いいね!」 1
なぜか、どうもうまくいきません。クリックするとpostStreamがないというエラーが発生します:
api.addCommunitySectionLink((baseSectionLink) =
{
return class CustomSectionLink extends baseSectionLink {
get name() {
return "intersection-navigator";
}
get route() {
return "tags.intersection";
}
get models() {
return [{tag_id: siteSettings.discourse_tag_intersection_navigator_all_word}];
}
get title() {
return I18n.t("tag_intersection_navigator.link.title")
}
get text() {
return I18n.t("tag_intersection_navigator.link.text");
}
};
});
まるで、現在のルートのモデルを含める必要があるかのようです。変ですね!
「いいね!」 1
その設定の出力は何ですか?手動で実行すると問題なく動作するように見えます:
get models() {
return ["featured", "tv"];
}
「いいね!」 2
はい、それで大丈夫です。とても助かります。ありがとうございます!
設定はただの文字列です。考えすぎていたようです。
クエリパラメータの名前が「models」なのは、100%直感的とは言えませんね?
あなたのPRでこれがずっとすっきりしますね。ありがとうございます!
「いいね!」 2
ええ、私も最初ははっきりしませんでしたが、最終的にEmberのLinkToコンポーネントを使用しており、それがモデル引数を期待しているためです…
「いいね!」 1
system
(system)
クローズされました:
11
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.