ruby-on-rails - Rails 6 中的日期时间比较
问题描述
我构建了这个简单的应用程序是为了更适应 Rails。它在开发中运行良好,但是当我部署到 Heroku 时,似乎 DateTime 比较不再有效。提交后,即使将来输入时间,我也会一直点击“无效的交货时间”。
我正在使用 Postgres 数据库,下面将包含的表单使用带有 date_time 字段的 form_tag 助手。我还在下面包含了我的架构。
# controllers/messages_controller.rb
class MessagesController < ApplicationController
def new
@message = Message.new
end
def create
@message = Message.new(message_params)
if @message.save
if @message.delivery_time > DateTime.now
UserMailer.scheduled_email(@message).deliver_later(wait_until: @message.delivery_time)
flash[:notice] = "Your message was scheduled :)"
else
flash[:notice] = "invalid delivery time, can't schedule :("
end
else
flash[:notice] = "Unable to schedule message :("
end
redirect_to root_path
end
private
def message_params
params.require(:message).permit(:content, :email_address, :delivery_time)
end
end
# views/messages/new.html.erb
<div class="container">
<div class="form">
<h1>write to future you</h1><br>
<%= form_with model: @message, url: '/messages' do |f| %>
<%= f.label "Message" %><br>
<%= f.text_area :content, placeholder: "Future John - \n\nI hope you invested in WUPHF...", required: true %><br><br>
<%= f.label "Email" %><br>
<%= f.text_field :email_address, placeholder: "johnlegend@mac.com", required: true, autocomplete: "off" %><br><br>
<%= f.label "Delivery" %><br>
<%= f.datetime_field :delivery_time, required: true %><br><br>
<%= f.submit "SEND IT", data: {confirm: "Are you sure you want to schedule this message?"} %>
<% end %>
<p><%= flash[:notice] %></p>
</div>
</div>
# db/schema.rb
ActiveRecord::Schema.define(version: 2020_09_27_171654) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "messages", force: :cascade do |t|
t.string "email_address"
t.text "content"
t.datetime "delivery_time"
end
end
任何有关如何排除故障的建议将不胜感激。
解决方案
推荐阅读
- javascript - 在渲染期间访问了属性“responseType”,但未在实例上定义
- ruby - DLError(执行格式错误)Ruby26-x64 试图打开 python.dll
- ruby - 在 Ruby 中使用三元运算符的未定义方法
- css - 使第n个孩子成为CSS中的随机变量
- java - Java Selenium ChromeDriver 可执行文件不存在
- java - 使用 Maven 构建 Java Play 应用程序的问题 - Sass 编译器未知错误,请尝试直接运行 sass
- javascript - 在没有 CanvasRenderingContext2D.rotate() 的情况下旋转图像
- javascript - 在 NPM 上捆绑和发布客户端 Web 代码
- javascript - AJAX POST XHR 失败 - 为什么这不起作用?
- java - FCM Cloud Messaging 与 Notifications 和 Message 的区别