Я реализовал Объекты Algolia в моем приложении Rails. Я использую его для отображения списка продуктов в качестве результатов поиска.Использование атрибутов индекса algolia в link_to в Rails app
На каждом продукте есть кнопка сохранения. Я хотел бы получить идентификатор каждого результата, чтобы передать его в теге link_to
.
Для реализации в режиме реального времени я следил за Algolia's guide.
Я создал индекс под названием Products (на моей учетной записи Algolia). Он имеет заголовок и идентификатор (+ идентификатор объекта, заданный Algolia).
Мои application.js файл с помощью поисковых виджетов Algoli:
var search = instantsearch({
// Replace with your own values
appId: "1JJ5DY0CLA",
apiKey: 'e24882443747d61c496efc4e17288a36', // search only API key, no ADMIN key
indexName: 'Idea',
urlSync: true
});
search.addWidget(
instantsearch.widgets.searchBox({
container: '#search-input',
placeholder: 'Search for growth ideas',
poweredBy: true
})
);
search.addWidget(
instantsearch.widgets.hits({
container: '#hits',
hitsPerPage: 10,
templates: {
item: getTemplate('hit'),
empty: getTemplate('no-results')
}
})
);
search.start();
function getTemplate(templateName) {
return document.querySelector('#' + templateName + '-template').innerHTML;
}
Код внутри моей index.html.erb зрения выглядит следующим образом:
<div id="hits"></div>
# Comment: this is the code to structure each result sent by the API
<script type="text/html" id="hit-template">
<div class="product">
<div class="product-title">
<h3>{{title}}</h3>
</div>
<div class="product-save">
# Comment: where I'd like to replace product_id by the result id
<%= link_to "save", product_path(product_id, current_user), method: :post %>
</div>
</div>
Как может Я получаю идентификатор результата, чтобы передать его тегу link_to?
Вот результат, отправленный Algolia (получен из браузера), не знаю, как получить переменную результата внутри представления/контроллера.
{
"results":
[
{
"hits":
[
{
"title":"Product title1",
"id":65,
"objectID":"344300262"
},
{
"title":"Product title2",
"id":66,
"objectID":"344300263"
}
]
}
]
Первые испытания:
Из algolia примера (смотри выше в моем коде) я undesrtand, что я могу получить результат свойства в HTML, как это: {{id}}
. Но я не уверен, что это за «объект».
Я могу отобразить идентификатор на странице с <%= "{{id}}" %>
. Но в Ruby, это интерпретируется как строка {{id}}
поэтому я не могу использовать его вместе, как показано ниже:
<%= link_to "save", product_path("{{id}}", current_user), method: :post %>
Кроме того, я увидел, что есть get_object
метод, который я могу использовать на индексе, чтобы получить весь объект Algolia в например: index.get_object("objectID")
, objectID
является integer
.
Но что касается идентификатора, я не знаю, как получить идентификатор объекта текущего отображаемого результата.
Если какое-либо улучшение для моего вопроса необходимо, я был бы рад сделать его более понятным. Просто скажи мне.
Вы можете показать мне переменную результата после получения результата поиска в Algolia – Dias
Я добавил контент application.js, и ответ, отправленный Algolia (полученным из браузера), является вкладкой в сети. Но я не уверен, как я не могу получить его из представления, например. @Dias – Didoudida