问题描述
我有一个像这样的字符串:
{2=>1,3=>1,1=>2008}
它是从这样的选择字段中生成的:
<%= user_record.date_select :response,{
order: [:month,:day,:year],prompt: {
day: 'Select day',month: 'Select month',year: 'Select year'
},start_year: Date.today.year - 12,end_year: Date.today.year - 110
} %>
并作为字符串存储在数据库中。 (我无法将其更改为日期类型,因为它是用户生成的内容)。
这导致2个问题: 我想在“显示”视图上显示日期的人性化版本。现在看起来像{2 => 1,3 => 1,1 => 2008}
我想在“编辑视图”表单字段上显示日期选择输入。现在它与
错误undefined method `year' for "{2=>1,1=>2008}":String
我曾尝试过拆分字符串并剥离字符,但是Ruby中有更好的解决方案吗?
解决方法
您可以在模型中添加一个customer setter和getter方法,以在视图的传入哈希与字符串类型数据库列之间进行转换。
类似的事情可能会起作用:
def response
Date.parse(super)
end
def response=(value)
value = Date.new(value[1],value[2],value[3]) if value.is_a?(Hash)
super(value.to_s)
end