2016-04-23 7 views
0

の内容はとなります。複数の期間のフィルタリングデータ

it's divide into two partial: 
1.for date (like 2016,01,01~2016,12,20) 
2.for hour (like 11:00~13:00) 

そのユーザを設定する複数時間は、そのコンテンツため例えば

  • 11加えることができるある:00〜12:00
  • 17:00〜19:00
  • 2016,03〜2016,07
  • 2017,01,20〜2017,01,22

どうすれば実装できますか?コンテンツテーブルの4つの時間列(開始日、終了日、開始時刻、終了時刻)を持つ関連テーブルを追加しますか?または任意の有用な宝石?

+0

なぜdatetimeを使用しないのですか? – Ilya

+0

plz詳細をご説明ください。 – John

答えて

0

こんにちは私の電話はありますが、私が帰宅したらこの回答が更新されます。これは基本的にあなたが探しているものですが、データのウィンドウはdateTimeではなく特定の日の間にあるので、時間/分などを追加する必要があります。SimpleForm gemを使用しても簡単ですが、 regular form_for代わりに。 jquery datepickerを使用するのはすごく簡単に設定できるからです。重要な点は、jqueryのdatepickerの入力は文字列なので、次のように再フォーマットする必要があることです。あなたは日付ピッカーは、(私はクラスの日付ピッカー」を使用)のために投入されたことにしたい各フォーム要素にクラスを追加する必要があります下のビューで:

enter image description here

<%= simple_form_for @ionit_tank_input, url: controller_path_here, html: { multipart: true, method: :post, class: "whatever_css_styling_classes", role: "form"} do |f| %> 
    <%= f.error_notification %> 
     <div class="form-group"> 
     <%= f.input :date1, as: :string, :placeholder => 'From (MM/DD/YYYY)', label: false, required: false, input_html: {class: "form-control form-input-colorss datepicker"} %> 
      </div> 
     <div class="form-group"> 
      <%= f.input :date2, as: :string, :placeholder => 'To (MM/DD/YYYY)', label: false, required: false, input_html: {class: "form-control form-input-colorss datepicker"} %> 
     </div> 

     <%= f.submit "See History", class: "btn btn-primary block full-width m-b" %> 
<% end %> 

このスクリプトを追加します。 jquery datepickerがインストールされたら、対応するアセットjsファイルに追加します。

<script type="text/javascript"> 
$('input.datepicker').datepicker({ 
     keyboardNavigation: false, 
     forceParse: false, 
     autoclose: true 
    }); 
</script> 

コントローラでは、必要に応じて選択した受信日時をフォーマットできます。以下のコードは月/日/年にフォーマットすることですが、HH:MMを追加することもできます。フォームから入力されるユーザー入力は文字列になりますので、strptimeを使用して変換する必要があります。

from = DateTime.strptime("#{params[:ionit_tank_input][:date1]}", '%m/%d/%Y') 
to = DateTime.strptime("#{params[:ionit_tank_input][:date2]}", '%m/%d/%Y') 
to = to + 1.day 
@inputs = @tank.ionit_tank_inputs.where(["created_at > ? and created_at < ?", from, to ]) 

@inputsは、この2日間の情報の選択です。必要であれば、datetimeを使用できます。

+0

ありがとうございますが、知りたいのですが、日時の両方の条件がありますが、どのように定義すればいいですか?私はどのようなタイプの状態を比較するのかをどのように知っていますか? – John

関連する問題