我已经看到了很多关于此的问题,但是当我看到它们时,它们总是要么使用jQuery,要么是那些将日期保存为字符串的人。在我的模型中:deadline
采用日期格式。我怀疑我是否应该date
或datetime
所以也许这就是我出错的地方。无论如何,我有这样的形式:
<%= form_for(@task) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_field :description, placeholder: "What to do?" %>
</div>
<div class="input">
<%= f.date_field :deadline %>
</div>
<%= f.submit "Create Task", class: "btn btn-small btn-default" %>
<% end %>
表单显示正常,我可以选择日期。但是,它不会将日期保存到数据库中。我试过了
<%= f.date_select :deadline %>
。
我是否应该将:deadline
更改为另一种类型,例如将其保留为字符串,只需在显示它时解析它?
编辑:tasks_controller.rb
class TasksController < ApplicationController
before_action :signed_in_user
before_action :correct_user, only: :destroy
def create
@task = current_user.tasks.build(task_params)
if @task.save
flash[:success] = "Task created!"
redirect_to root_url
else
@feed_items = []
render 'static_pages/home'
end
end
def destroy
@task.destroy
redirect_to root_url
end
private
def task_params
params.require(:task).permit(:description)
end
def correct_user
@task = current_user.tasks.find_by(id: params[:id])
redirect_to root_url if @task.nil?
end
end
答案 0 :(得分:1)
请在 tasks_controller.rb
中更新您的strong parametersdef task_params
params.require(:task).permit(:description, :deadline)
end