使用form_for时,日期不保存到数据库

时间:2015-06-13 19:15:26

标签: ruby-on-rails forms date

我已经看到了很多关于此的问题,但是当我看到它们时,它们总是要么使用jQuery,要么是那些将日期保存为字符串的人。在我的模型中:deadline采用日期格式。我怀疑我是否应该datedatetime所以也许这就是我出错的地方。无论如何,我有这样的形式:

<%= 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

1 个答案:

答案 0 :(得分:1)

请在 tasks_controller.rb

中更新您的strong parameters
def task_params
  params.require(:task).permit(:description, :deadline)
end