我在我的Rails應用中實現了Algolia的即時搜索。我用它來顯示產品列表作爲搜索結果。在Rails應用中使用link_to中的algolia索引屬性
在每個產品上都有一個保存按鈕。我想要檢索每個結果的ID,並將其傳遞給link_to
標記。
對於即時搜索實施,我跟着Algolia's guide。
我創建了一個名爲Products(在我的Algolia帳戶上)的索引。它有一個標題和一個id(+ Algolia提供的objectID)。
我的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>
哪有我檢索結果的id傳遞給link_to標記?
這是Algolia發出的結果(從瀏覽器中獲得),不知道如何在視圖/控制器中獲取結果變量。
{
"results":
[
{
"hits":
[
{
"title":"Product title1",
"id":65,
"objectID":"344300262"
},
{
"title":"Product title2",
"id":66,
"objectID":"344300263"
}
]
}
]
第一次測試:
從algolia例子(見上面我的代碼)我undesrtand,我可以檢索結果屬性到像這樣的HTML:{{id}}
。但我不確定它是什麼樣的「對象」。
我可以用<%= "{{id}}" %>
在頁面上顯示id。但是在Ruby它被解釋爲一個字符串{{id}}
,所以我不能用它沿着象下面這樣:
<%= link_to "save", product_path("{{id}}", current_user), method: :post %>
而且,我看到有一個get_object
方法,我可以用我的索引檢索整個Algolia的對象像這樣: index.get_object("objectID")
,objectID
是integer
。
但至於id,我不知道如何獲得顯示的當前結果的objectID。
如果需要改進我的問題,我很樂意讓它更容易理解。就告訴我嘛。
你可以告訴我結果變量後,從阿爾戈利亞搜索結果 – Dias
我添加了application.js內容,並且Algolia(從瀏覽器獲得它)發送的響應是網絡選項卡。但我不確定我是如何從視圖中得不到它的。 @Dias – Didoudida