2

米国形式mm/dd/yyyy ( bootstrap datepickerのデフォルト) を変換するようにransack gemに指示する方法は?

私が取り組んでいるプロジェクトにはいくつかのlacalesファイル(英国、米国)があるため、英国は単純です(日付ピッカー形式オプションを変更するだけです)が、米国形式は問題です

例:

= 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フォーマットをサーバーに送信し、ユーザーが望むフォーマットでクライアント側に日付を表​​示するように私に言いました.

さて、それを行う方法は?非表示フィールドを追加し、ユーザーが日付ピッカーで日付を選択したときに、JS でそのフィールドを DB 形式に設定します。この要旨の詳細。

于 2012-07-12T12:29:33.937 に答える
1

equal8、あなたのコメントに答えるには、日付ピッカーの翻訳を追加する必要があると思います:

  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 に答える