我是一個新的ROR用戶,試圖實現一個DateTime選擇器來選擇搜索功能的日期。Ruby on Rails,Datepicker在兩個日期之間搜索
我的問題是,當我在DatePicker中輸入兩個日期(日期從和日期到)時,我得到的搜索結果不一致。有時我得不到結果,有時我會得到所有結果。我也使用bootstrap-datepicker-rails
寶石以及ransack
寶石。
這是我的看法是什麼樣子
<div class="field">
<%= f.label :departure_date_gteq, "Departure Date Between" %>
<%= f.search_field :departure_date_gteq, "data-provide" => "datepicker" %>
<%= f.label :return_date_lteq, "and" %>
<%= f.search_field :return_date_lteq, "data-provide" => "datepicker" %>
</div>
兩個數據庫列我引用是DEPARTURE_DATE出發,RETURN_DATE和。存儲的日期是日期時間,看起來像這樣,
departure_date
2016-08-07 00:00:00.000000
return_date
2016-08-14 00:00:00.000000
我在DatePickers中輸入2016-08-06和2016-08-15,並且返回了所有結果。
我的搜索表單DatePicker可以發送無法正確比較數據庫中的DateTime的數據嗎?
我是否正確使用'gteq'和'lteq'調用?
編輯#1 @邁克爾Gaskill,你是正確的,問題是日期格式。當我手動輸入日期時,我會得到正確的搜索結果。我只需要弄清楚如何在傳遞給控制器之前更正格式。
這是我的控制器的樣子。
class HomeController < ApplicationController
def index
@search = Sailing.search(params[:q])
@sailings = @search.result
... Other calls ...
end
end
下面是我的視圖中生成航行內容的完整代碼。請注意,我正在使用search_for_for,它是ransack gem的一部分。
<%= search_form_for @search, url: root_path, method: :post do |f| %>
<div class="field">
<%= f.label :cruise_ship_name_or_cruise_ship_company_or_destination_identifier_cont, "Cruise Ship Name" %>
<%= f.text_field :cruise_ship_name_or_cruise_ship_company_or_destination_identifier_cont %>
</div>
<div class="field">
<%= f.label :departure_date_gteq, "Departure Date Between" %>
<%= f.search_field :departure_date_gteq, "data-provide" => "datepicker" %>
<%= f.label :return_date_lteq, "and" %>
<%= f.search_field :return_date_lteq, "data-provide" => "datepicker" %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %>
謝謝。
謝謝您的回覆!這是我正在處理的查詢。搜索= Sailing.search(params [:q])是我的查詢。我在這裏將數據傳遞給視圖sailings = search.result。我是否需要更改控制器或視圖中的格式? – Aptorian
在控制器中。我用幾個例子說明了你如何處理'Sailing#search'。 –
嗯,感謝您的回覆。目前我似乎無法做到這一點,但明天我會再試一次。乾杯。 – Aptorian