Angenommen, ich baue eine Hotelbuchungsplattform, und jeder Zimmereintrag hat einen Verfügbarkeitskalender. Ein allgemeines Suchkriterium ist die Suche nach Dauer. Wenn Benutzereingaben das Datum und das Enddatum beginnen und die Datenbank Räume abruft, die von dieser Dauer nicht besetzt sind.So suchen Sie nach Dauer in Algolia
Ich habe einen sehr naiven Ansatz implementiert, wo ich die belegten Tage als ein Array von Tagen speichern.
attribute :occupied_at_i do
array = []
if !occupied_at.empty?
occupied_at.each do |date|
array << Time.parse(date).to_i
end
end
array
end
Und dann auf der Client-Seite, ich die folgende JavaScript-Code hinzufügen Quer prüfen, ob der Tag in der numericRefinement
// Date Filters
$('.date-field')
.on('change', function() {
if(_.every(_.map($('.date-field'), function(date) {return _.isEmpty(date.value) }), function(n) {return n==false;})) {
helper.clearRefinements('occupied_at_i');
var arrayOfDates = addDateFilters();
_.forEach(arrayOfDates, function(n) {
helper.addNumericRefinement('occupied_at_i', '!=', n);
});
showClearAllFilters();
helper.search();
}
});
Also, es ist offensichtlich kein guter Weg, es zu tun Ich frage mich, was ist eine bessere Lösung für Algolia und Suche nach Dauer?
Dank
Ich glaube tatsächlich, dies ist ein guter Weg, um Ihr Problem anzugehen. Die Verfügbarkeitssuche ist immer schwierig zu handhaben. Was stört dich bei dieser Lösung? – Jerska