在Rails中,将字符串从date_select转换为Date

问题描述

我有一个像这样的字符串:

{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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...