2012-07-04 4 views
2

Как сообщить ransack gem для перевода в США мм/дд/гггг (deffault от bootstrap datepicker)?, как рассказать драгоценный камень ransack, чтобы распознать датпикер США формат

проект я работаю над будет иметь несколько lacales файлов (Великобритания, США), так что Великобритания просто (просто изменить параметр формата DatePicker), но формат США проблема

Пример:

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

enter image description here

Титулы:

{"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')

Примечание: Я знаю, что я мог бы справиться с этим на уровне контроллера, но я м ищет решения, где Ransack автоматически подобрать конфигурацию локали и синтаксический анализ, что путь

+0

ok Я нашел решение: мой коллега сказал мне всегда отправлять формат yyyy-mm-dd на сервер и просто показывать дату на стороне клиента в любом формате, который пожелает пользователь. Как это сделать ? Добавьте дополнительное скрытое поле и с JS установите это поле в формат DB, когда пользователь выбрал дату с datepicker ... подробнее в https://gist.github.com/3053409 – equivalent8

ответ

1

Мой коллега сказал мне, чтобы всегда передавать формат yyyy-mm-dd на сервер и просто отображать дату клиентской стороне в любом формате, который пожелает пользователь.

Теперь, как это сделать? Добавьте дополнительное скрытое поле и с JS установите это поле в формат DB, когда пользователь выбирает дату с datepicker. Подробнее 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

Смежные вопросы