2016-09-08 8 views
0

データがあり、指定した期間を選択してこのデータをフィルタリングできるようにしたいと考えています。私は自分のフィルター使用して、コントローラで日付範囲を供給することでデータを操作することができますRails 4:ビューでフォームを使用してデータをフィルタリングする

def self.filter_chart(date_start = 2.years.ago.to_s, date_end = Date.today.to_s) 
    real_start = date_start.to_date 
    real_end = date_end.to_date 
    part_1 = PotentialClient.where('created_at >= ?', real_start) 
    part_2 = part_1.where('created_at <= ?', real_end) 

    return part_2 
end 

@clients = PotentialClient.filter_chart(2.days.ago.to_s, Date.today.to_s)

を...しかし、私は、ユーザーが開始日と終了日を選択できるようにしたいとその期間のデータを表示するためにフォームを送信してください。どのようにフォーム/関数を作成するのですか?

答えて

0

私はこれを私の現在のアプリでやっています。ここにフォームビューがあります。

<% 
    if params[:start_date].present? && params[:end_date].present? 
    start_date = Date.parse(params[:start_date]) 
    end_date = Date.parse(params[:end_date]) 
    else 
    start_date = Time.zone.today - 30.days 
    end_date = Time.zone.today 
    end 
%> 

<%= form_tag('', class: 'form', method: :post) do %> 
    <input type="text" class="form-control datepicker" name="start_date" value="<%= start_date.strftime("%Y-%m-%d") %>"> 
    <input type="text" class="form-control datepicker" name="end_date" value="<%= end_date.strftime("%Y-%m-%d") %>"> 
    <input type="submit" class="btn btn-primary" value="Run report"> 
<% end %> 

ここにレポートコントローラがあります。

def create 
    if params[:start_date].present? && params[:end_date].present? 
    start_date = Date.parse(params[:start_date]) 
    end_date = Date.parse(params[:end_date]) 
    else 
    start_date = Time.zone.today - 30.days 
    end_date = Time.zone.today 
    end 

    start_date = Time.zone.parse(params[:start_date]).beginning_of_day 
    end_date = Time.zone.parse(params[:end_date]).end_of_day 
    report_data = PotentialClient.where('created_at >= ?', start_date).where('created_at <= ?', end_date) 
end 
+0

私は新しいエントリを「保存」しようとしていません。表示されているデータを変更したいだけです。この答えはそうするのだろうか? –

+0

はい、私のサンプルを更新しました –

関連する問題