【问题标题】:how to tell ransack gem to recognize datepicker US format如何告诉 ransack gem 识别 datepicker 美国格式
【发布时间】:2012-07-04 22:38:32
【问题描述】:

如何告诉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

(应创建_at > '2012-07-04 00:00:00')

注意:我知道我可以在控制器级别处理这个问题,但我正在寻找 Ransack 将自动获取语言环境配置并以这种方式解析的解决方案

【问题讨论】:

  • 好的,我找到了解决方案:我的同事告诉我始终将 yyyy-mm-dd 格式发送到服务器,并以用户希望的任何格式在客户端显示日期。怎么做 ?当用户使用 datepicker 选择日期时,添加额外的隐藏字段并使用 JS 将该字段设置为 DB 格式...更多 gist.github.com/3053409

标签: ruby-on-rails ruby-on-rails-3 meta-search ransack


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    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
    

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

    【讨论】:

    • 我上面的评论是我的问题的答案。 “怎么做?”部分评论是反问,我在同一评论中回答,但无论如何谢谢
    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多