【发布时间】:2015-12-17 20:50:22
【问题描述】:
假设我正在构建一个酒店预订平台,并且每个房间记录都有可用性日历。一个常见的搜索条件是按持续时间搜索。用户输入开始日期和结束日期,数据库会获取该期间内未被占用的房间。
我实现了一种非常天真的方法,将占用的天数存储为天数。
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
然后在客户端,我添加以下javascript代码来交叉检查日期是否在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();
}
});
所以,这显然不是一个好方法,我想知道如何更好地利用 algolia 并按持续时间搜索?
谢谢
【问题讨论】:
-
我实际上相信这是解决您的问题的好方法。可用性搜索总是很难处理。这个解决方案有什么让您不安的地方?
标签: javascript ruby-on-rails search algolia