РЕДАКТИРОВАНО: Изучив подробнее api.addDiscoveryQueryParam, я, кажется, понял общую суть:
Мне нужно программно получить все темы с пользовательским полем fun_level = super-duper-fun. Думаю, для этого может подойти метод контроллера? (все еще разбираюсь).
Альтернативный вариант — выполнить поиск через ajax(“/search”), где я ищу все темы по пользовательскому полю fun_level=super-duper-fun. Однако создания пользовательского поля недостаточно для включения такой возможности. Мне нужно сделать так, чтобы поле fun_level стало одним из полей, по которым можно выполнять поиск (точно так же, как можно искать по определенным категориям, тегам и т.д.), и это не происходит автоматически.
Для этого каким-то образом требуется использование api.addDiscoveryQueryParam в JS-файле в сочетании с TopicQuery в plugin.rb. Но, честно говоря, у меня пока не получается заставить это работать. Я видел плагины, использующие эти методы, но не смог разобраться, как они “доводят дело до конца”. Думаю, нужен дополнительный код, но я его еще не нашел.
Как перейти от этих методов к тому, чтобы пользовательское поле стало доступным как поисковый термин?
Предыдущий ответ
Спасибо, @angus. Уточню: цель не в том, чтобы пользователи вручную вводили значения поиска в поле поиска. Цель — программно получать темы на основе определенного пользовательского поля. Например, пользователь заходит на страницу /fun_levels/super-duper-fun и загружает все темы, где поле fun_level = ‘super-duper-fun’.
Для этой цели подходит api.addDiscoveryQueryParam?
Просматривая примеры, например здесь, я не понимаю, как addDiscoveryQueryParam работает для фактического получения тем (мне кажется, вызов этого метода не возвращает результаты, которые можно обработать).
Возможно, он предназначен для того, чтобы позволить пользователю вручную искать по этому термину в поле поиска? Это не тот сценарий, который я планирую. (Возможно, я что-то упускаю).
Ранее я упоминал использование ajax(“/search…”), так как это лучший вариант, который я пока придумал для получения тем, но мне интересно, есть ли более эффективный способ, даже если для этого потребуется создать модель и метод контроллера для автоматического отображения тем, как это делается для тегов вида tags/:tag-name (это более сложный вариант, поэтому я надеюсь его избежать, но если это лучший путь — я рассмотрю такую возможность).