2012-07-25 31 views
0

我試圖在日期上搜索,並且數據庫中的格式是2012-05-15。當我使用日期選擇器時,我擁有它,以便用戶可以選擇一個日期,然後顯示爲15-05-2012。Ruby on Rails:jquery Datepicker備用字段格式更改

我想要在2012-05-15格式上進行搜索,而不會改變觀看者看到的格式。我試圖改變模型的格式,但沒有運氣。

這裏是我的搜索視圖:

<%= form_tag search_path, method: :get do %> 
<%= text_field_tag("start_date") %></br> 
<%= submit_tag "Search", name: nil %> 

<% end %> 

這裏是我的application.js:

jQuery(function(){ 
    jQuery('#start_date').val(""); 
    jQuery('#start_date').datepicker({dateFormat: 'dd-mm-yy'}); 
}); 

我的控制器:

def search 


@project_search = Project.search(params[:start_date].order(sort_column + ' ' + sort_direction).paginated_for_index(per_page, page) 

    @project = Project.new(params[:project]) 

respond_to do |format| 
     format.html # search.html.erb 
     format.json { render :json => @project } 
    end 

end 

和我的模型:

def self.search(search_start_date) 
    return scoped unless search_start_date.present? 
    where([start_date LIKE ?, "%#{search_start_date}%"]) 
end 

我試過使用jquery選項,但沒有運氣。

jQuery(function(){ 
jQuery('#start_date').val(""); 
jQuery('#start_date').datepicker({altField: '#start_date2', dateFormat: 'yy-mm-dd'}); 


}); 

希望有人能幫助我。提前致謝!

回答

1

更改dateFormat在jQuery Datepicker實例選項將改變你的用戶看日期的方式。

在模型中

def self.search(search_start_date) 
    return scoped unless search_start_date.present? 
    search_start_date = Date.parse(search_start_date).strftime("%Y-%m-%d") 
    where([start_date LIKE ?, "%#{search_start_date}%"]) 
end 

驗證search_start_date的初始格式,以確保它,否則也應該被考慮。

+1

我不知道我的答案是如何讓你嘗試'Date.parse(「%d-%m-%Y」)'; '「%d-%m-%Y」'絕對不是有效的日期。我更新了我的答案,以便更加明確。 – deefour 2012-07-25 11:58:27

+0

你做到了!非常感謝你! – Jazz 2012-07-25 12:02:40