0

私はRailsには比較的慣れていませんが、プログラミングには慣れていません...これを無駄に解決しようとするのに「正気」よりもはるかに多くの時間を費やしました...

Ruby 1.92、Rails 3.1、formtastic 2.1 と ui_datepicker-rails3、jquery datepicker ウィジェットのラッパーを使用しています

https://github.com/kristianmandrup/ui_datepicker-rails3

問題のある VIEW には、次の非常に単純な行があります (これは、エラーで参照されている行 #18 です。

<%= f.input :birthdate, :as => :ui_date_picker %>

テキストボックスをクリックすると、jquery datapicker が表示されて正常に動作しますが、送信すると次のようになります。

I18n::Devise/registration#create の ArgumentError

C:/Sites/sl2/app/views/devise/registrations/new.html.erb を表示すると、18 行目が発生します。

オブジェクトは、Date、DateTime、または Time オブジェクトでなければなりません。「2012 年 5 月 4 日」が付与されました。

私の「新しい」予感は、日付ウィジェットが文字列として出力し、モデルが日付を期待することです (生年月日は日付です)。

だから私はさまざまな変換を試しました def birthday= (value)

begin
  require 'date'
    date_parsed=Date.parse(value)
    write_attribute(:birthdate, date_parsed)
    puts date_parsed
    @bad_date=nil
  rescue
    write_attribute(:birthdate, nil)
    @bad_date = value
  end
end

-- これは他の問題を引き起こします...これはもっと単純なはずです...何が欠けていますか?!

4

1 に答える 1

0

モデルまたはコントローラーで日付をフォーマットするか、datepicker が出力するフォーマットを次のように変更できます。

$(document).ready(function(){
 $('input.ui-date-picker').datepicker({dateFormat: "yy-mm-dd"});
});

日付ピッカーに読みやすいフォーマットを出力させてから、gem「デローカライズ」を使用して保存時に変換を行います。

https://github.com/clemens/delocalize

または、セッターが dateobject または nil を返す必要がある

def birthdate= (value)
  self.birthdate = value.to_date
end
于 2012-04-25T20:46:13.360 に答える