2012-07-04 51 views
2

如何告訴ransack gem翻譯美國格式mm/dd/yyyy(deffault從bootstrap datepicker)?如何告訴ransack gem認識datepicker美國格式

項目我的工作將有幾個lacales文件(英國,美國),那麼英國很簡單(只需更改日期選擇器格式選項),但美國的格式問題

例子:

= search_form_for @post do |f| 
    f.input :created_at_gt,7 

enter image description here

PARAMS:

{"utf8"=>"✓", "q"=>{"created_at_gt"=>"07/04/2012",....} 

SQL:

... `posts`.`created_at` > '2012-04-07 00:00:00') LIMIT 25 OFFSET 0 

(應created_at> '2012-07-04 00:00:00')

注:我知道我可以處理這個控制器上的水平,但我我想找解決方案,洗劫會自動拾取的語言環境配置和解析方式

+0

ok我找到了解決方案:我的同事告訴我總是發送yyyy-mm-dd格式到服務器,並且只是以用戶希望的任何格式在客戶端顯示日期。怎麼做 ?添加額外的隱藏字段,並用JS將該字段設置爲數據庫格式,當用戶使用datepicker選擇日期...更多信息https://gist.github.com/3053409 – equivalent8

回答

1

我的同事告訴我,總是發送yyyy-mm-dd格式的服務器,只是顯示的日期客戶端以用戶希望的任何格式。

現在,該怎麼做?添加額外的隱藏字段,當用戶使用datepicker選擇日期時,JS將該字段設置爲數據庫格式。更多in this gist.

1

equivalent8,回答您的評論,我認爲你需要添加日期選擇器翻譯:

date: 
    picker_format: "dd/mm/yyyy" 
    formats: 
     input: "%d/%m/%Y" 
     default: "%d %b %Y" 
     long: "%A %e %B %Y" 

但後來我用簡單的形式有以下

class DatePickerInput < SimpleForm::Inputs::Base 
    def input 
    input_html_options.merge!(:value => 
     I18n.l(@builder.object.send(attribute_name) || Time.now.to_date, :format => :input), 
     :data => { :date_format => I18n.t('date.picker_format')} 
    ) 
    "#{@builder.text_field(attribute_name, input_html_options)}".html_safe 
    end 
end 

這可能幫助你在你的情況

+0

我上面的評論是我的問題的答案。 「怎麼做?」部分評論是修辭問題,我在同一評論中回答了這個問題,不過謝謝 – equivalent8