Rails 5 无法存储在数据库中

urj*_*ils 6 controller ruby-on-rails

我无法将记录存储在数据库中,以下是我的代码

表单参数

在此处输入图片说明

控制器

def create
    @sales_dailystatus_info = SalesDailystatusInfo.new(sales_dailystatus_info_params)
    @sales_dailystatus_info.user_id = current_user.id
    @project = @sales_dailystatus_info.project
    respond_to do |format|
      if @sales_dailystatus_info.save
        byebug
        format.js{}
        format.html{redirect_to dashboard_project_path(@project)}
      else
        format.js{}
        format.html{render nothing: true}
      end
    end
end

def sales_dailystatus_info_params
    params.require(:sales_dailystatus_info).permit(:user_id, :project_id, :sales_task_id, 
    :task_time, :description)
end
Run Code Online (Sandbox Code Playgroud)

模型

class SalesDailystatusInfo < ActiveRecord::Base    
     belongs_to :project
     belongs_to :user, optional: true
     belongs_to :sales_task
     validates :user_id, :sales_tasks_id, :task_time, presence: true
end
Run Code Online (Sandbox Code Playgroud)

您可以在截图中看到我在保存时回滚。

请帮我。

编辑:

我已经进行了更改,现在我正在迭代参数并删除强参数。以下是我的代码

def create
    params[:sales_dailystatus_info].values.each do |sales_dailystatus_info|

    @sales_dailystatus_info = SalesDailystatusInfo.create(
                    project_id: sales_dailystatus_info[:project_id],
                    sales_tasks_id: sales_dailystatus_info[:sales_task_id],
                    task_time: sales_dailystatus_info[:task_time],
                    description: sales_dailystatus_info[:description],
                    user_id: current_user.id
    );  
    byebug       
  end      

  respond_to do |format|
    format.js{}
    format.html{render nothing: true}
    end
end
Run Code Online (Sandbox Code Playgroud)

仍然无法保存它。给我错误销售任务必须存在。

urj*_*ils 1

我通过更改字段名称解决了这个问题。

我将 sales_daily status_info 中的字段 sales_tasks_id 更改为 sales_task_id。

我需要一个单数外键名称而不是复数。