0

我对 Rails 比较陌生,但对编程不熟悉……我花了比“理智”更多的时间来尝试解决这个问题,但无济于事……

我正在使用带有 ui_datepicker-rails3 的 Ruby 1.92、Rails 3.1、formtastic 2.1,它是 jquery datepicker 小部件的包装器

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

有问题的 VIEW 有这个非常简单的行(这是错误中引用的第 18 行:

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

当我单击文本框时,jquery datapicker 出现并且工作正常,但在提交时我不断收到:

I18n::ArgumentError 在设计/注册#create

显示 C:/Sites/sl2/app/views/devise/registrations/new.html.erb 其中第 18 行提出:

对象必须是日期、日期时间或时间对象。“2012 年 5 月 4 日”给出。

我的“newb”预感是日期小部件输出为字符串,并且模型需要一个日期(生日是一个日期)。

所以我尝试了各种转换 defbirthdate= (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"});
});

我让 datepicker 输出一种长可读格式,然后使用 gem“delocalize”在保存时进行转换;

https://github.com/clemens/delocalize

或者你的 setter 需要返回一个 dateobject 或 nil

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