Can Rails可以自动解析从表单text_field收到的日期时间

Ale*_*rov 5 json ruby-on-rails

Rails可以自动解析从表单的text_field收到的日期时间吗?

# in view
<div class="field">
  <%= f.label :created_at %><br />
  <%= f.textfield :created_at %>
</div>

# in controller
params[:product][:updated_at].yesterday
Run Code Online (Sandbox Code Playgroud)

目前我收到以下错误:

undefined method `yesterday' for "2010-04-28 03:37:00 UTC":String
Run Code Online (Sandbox Code Playgroud)

Soo*_*uNe 1

如果您直接将该参数放入模型中,就像 Rails 生成器样板代码所做的那样,ActiveRecord它会为您处理好

def create
    @product = Product.new(params[:product])
    @product.updated_at.yesterday #will succeed
    #rest of method
end
Run Code Online (Sandbox Code Playgroud)

除此之外,你还陷入了类似的困境:

DateTime.parse(params[:product][:update_at])
Run Code Online (Sandbox Code Playgroud)

或者

DateTime.civil_from_format(:local, year, month, day, hour, minutes, seconds)
Run Code Online (Sandbox Code Playgroud)

但是,根据我的经验,.civil_from_format夏令时并不像您所期望的那样工作。