2

如何告诉ransack gem翻译美国格式mm/dd/yyyy(默认来自bootstrap datepicker )?

我正在处理的项目将有几个 lacales 文件(英国,美国),所以英国很简单(只需更改 datepicker 格式选项)但美国格式是问题

例子:

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

在此处输入图像描述

参数:

{"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 将自动获取语言环境配置并以这种方式解析的解决方案

4

2 回答 2

2

我的同事告诉我始终将yyyy-mm-dd格式发送到服务器,并以用户希望的任何格式在客户端显示日期。

现在,该怎么做?当用户使用 datepicker 选择日期时,添加额外的隐藏字段并使用 JS 将该字段设置为 DB 格式。更多在这个要点。

于 2012-07-12T12:29:33.937 回答
1

等效8,要回答您的评论,我认为您需要为日期选择器添加翻译:

  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

这可能会对您的情况有所帮助

于 2012-07-11T17:01:19.127 回答