在index
視圖我Invoice
模型的我有users
可以使用一定的標準來過濾invoices
一種形式:如何將GET參數從自定義日期格式轉換爲數據庫日期格式?
<%= form_tag invoices_path, :method => 'get' do %>
<%= text_field_tag :number, params[:number] %>
<%= text_field_tag :after, params[:after] %>
<%= text_field_tag :before, params[:before] %>
<%= text_field_tag :min, params[:min] %>
<%= text_field_tag :max, params[:max] %>
<%= submit_tag "Search", :name => nil %>
<% end %>
class InvoicesController < ApplicationController
def index
@invoices = current_user.invoices.search(params)
end
...
end
class Invoice < ActiveRecord::Base
belongs_to :user
def self.search(params)
data = all
data = data.number_contains(params[:number]) if params[:number]
data = data.date_is_after(params[:after]) if params[:after]
data = data.date_is_before(params[:before]) if params[:before]
data = data.total_is_more_than(params[:min]) if params[:min]
data = data.total_is_less_than(params[:max]) if params[:max]
data
end
def self.date_is_after(date)
where("date >= ?", date)
end
def self.date_is_before(date)
where("date <= ?", date)
end
...
end
的問題是,對按日期過濾發票,用戶必須輸入參數after
和before
數據庫使用的格式,即對用戶而言非常麻煩的YYYY-MM-DD
。
如何使用戶可以在他的首選date_format
中進行搜索,如在preferences
記錄的date_format
列中指定的那樣,例如, %d.%m.%Y
或%m/%d/%Y
?
如果該自定義日期格式被搜索表單接受,那將會很好。
這是如何實現的?
感謝您的任何幫助。
最簡單的方法是使用日期選擇器類型組件。然後你總是得到正確的格式。更簡單但更笨重的替代方法是在日,月和年使用組合框。 – Jaydee