Ruby on rails 在Rails 5中呈现datetime列的日期和时间字段

Ruby on rails 在Rails 5中呈现datetime列的日期和时间字段,ruby-on-rails,datetime,simple-form,ruby-on-rails-5,Ruby On Rails,Datetime,Simple Form,Ruby On Rails 5,我读了很多书,也尝试了很多,但没有找到解决办法 任务很简单: 我在datetime的格式中安排了一个列 我希望将表单中的datetime字段分为两个字段:一个用于日期,另一个用于时间,而不是一个字段。在我的表中,我希望将其保留为一个datetime字段 因此,在某个时刻,我必须加入日期和时间对日期时间。因为我的模型中有datetime的验证,所以我不能加入控制器 我试过几件事: 创建属性访问器(但我找不到在模型中加入日期和时间的方法) 通过浏览器端的JS找到一些插件来解决这个问题 ,但它也不会

我读了很多书,也尝试了很多,但没有找到解决办法

任务很简单:

我在datetime的格式中安排了一个列

我希望将表单中的datetime字段分为两个字段:一个用于日期,另一个用于时间,而不是一个字段。在我的表中,我希望将其保留为一个datetime字段

因此,在某个时刻,我必须加入日期和时间对日期时间。因为我的模型中有datetime的验证,所以我不能加入控制器

我试过几件事:

  • 创建属性访问器(但我找不到在模型中加入日期和时间的方法)
  • 通过浏览器端的JS找到一些插件来解决这个问题
  • ,但它也不会加入值
我想很多应用程序都有这个问题,但仍然无法在互联网上找到解决方案

您能提出任何解决方案吗?

在rails执行验证之前,使用回调将两个字段合并为一个datetime字段

例如:

class YourClass < ActiveRecord::Base

  before_validation(on: :create) do
    self.your_field = do_stuff
  end

end
classyourclass

您可以在rails指南中阅读更多信息。

为什么不能在控制器中加入此功能?您可以同时允许date和time参数,然后这样做:将它们加入到controllery中,这就是我以前所做的。但我有一些验证规则要在这个日期时间运行。据我所知,最好是将这些内容放入模型中……是的,验证应该在模型中,但在将字段添加到对象(并因此触发验证)之前,可以在控制器中组合参数。当然……验证仅在调用save()时运行……谢谢!