我正在嘗試針對一個專案創建多個錯誤,但它在 edit_task_params 中顯示錯誤
param is missing or the value is empty: project
當我創建專案時,bug_id 為空,我只想為專案添加錯誤 ID,但我不知道如何解決這個問題。
專案模型
class Project < ApplicationRecord
has_many :bugs
end
錯誤模型類 Bug < ApplicationRecord belongs_to :project end
錯誤控制器
class BugController < ApplicationController
def new
@bug = Bug.new
end
def create
parameters = bug_params.merge({ user_id: current_user.id })
@bug = Bug.new(parameters)
parameter = edit_task_params.merge({ bug_id: @bug.id })
@project = Project.find(params[:project_id])
@project = Project.update( parameter)
respond_to do |format|
if @bug.save
@project = Project.find(params[:project_id])
@project.update(edit_task_params)
format.html { redirect_to new_bug_path, flash: { success: "bug added"} }
else
format.html { render :new }
end
end
end
private
def bug_params
params.require(:bug).permit(:title, :description, :screen_shot, :typeOf, :status_is, :deadline, :user_id, :project_id )
end
def edit_task_params
params.require(:project).permit(:bug_id)
end
結尾
uj5u.com熱心網友回復:
首先,我們需要看看你解決問題的方法是否足夠好?
為什么Project模型需要存盤bug_id?
要回答這個問題,我們需要考慮one_to_many關系是如何作業的。
比方說
- 一個專案有很多Bug
- 許多錯誤屬于一個專案
想到了兩種方法
- 我們應該將 bug id 存盤到 Project 表中| 模型
- 我們應該把 project_id 放在 bugs 表中 | 模型
它將如何使我們的專案表看起來像

如您所見,我們必須存盤多個 bugs_ids 值,因為單個專案可能有很多錯誤,不推薦這種結構,因為它違反了第一個規范化。所以被忽略
現在我們轉向第二種方式

所以我們將使用這種方法
現在回到 Rails 和你的解決方案
1-您不需要模型,因此將其洗掉bug_id。2-您在創建錯誤時Project也不需要更新洗掉該部分。Project3-您不應該在我假設您嘗試執行的創建方法中執行更新。
因此,在執行必要的更正后,您的代碼將如下所示。
parameters = bug_params.merge({ user_id: current_user.id })
bug = Bug.new(parameters)
if bug.save
format.html { redirect_to new_bug_path, flash: { success: "bug added"} }
else
format.html { render :new }
end
您可以通過這種方式使用專案訪問您的錯誤
bugs = Project.find(project_id).bugs
您需要創建一個單獨的方法來更新和編輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416206.html
標籤:
下一篇:比較專案的URL結構
