oob*_*e11 1 ruby-on-rails ruby-on-rails-4
我试图使用引导程序日期选择器在我的模型之一上设置日期字段。我想在用户选择日期后将其格式化为 MM/DD/YYYY。问题是这个日期格式对我的数据库(YYYY/MM/DD)不正确,我需要在保存之前对其进行格式化。
在我的模型中,我创建了一个 setter 方法
def start_date=(val)
Date.strptime(val, '%Y-%m-%d')
end
Run Code Online (Sandbox Code Playgroud)
当我在表单中输入日期(例如 2014 年 9 月 23 日)时,我收到一条错误消息,指出日期无效。
我究竟做错了什么?
我的参数
{"utf8"=>"?",
"authenticity_token"=>"***",
"event"=>{"start_date"=>"09/24/2014",
"user_id"=>"1"},
"commit"=>"Submit"
}
Run Code Online (Sandbox Code Playgroud)
编辑
所以在稍微改变我的方法之后
def start_date=(val)
Date.strptime(val, "%m/%d/%Y") if val.present?
end
Run Code Online (Sandbox Code Playgroud)
我不再收到“无效日期”错误。但是,现在没有日期保存到记录中。我试过了
def start_date=(val)
@start_date = Date.strptime(val, "%m/%d/%Y") if val.present?
end
Run Code Online (Sandbox Code Playgroud)
正如@animatedgif 所建议的那样,但仍然没有任何反应。
所以我想出了最好的方法来做到这一点(我认为:P)。
我必须在我的 setter 中添加一个 write_attribute() 才能保存。
def start_date=(val)
date = Date.strptime(val, "%m/%d/%Y") if val.present?
write_attribute(:start_date, date)
end
Run Code Online (Sandbox Code Playgroud)
这将我的 MM/DD/YYYY 设置为 YYYY/MM/DD,然后将其保存到数据库中。
| 归档时间: |
|
| 查看次数: |
3331 次 |
| 最近记录: |