我試圖針對一個專案創建多個bug,但在edit_task_params中顯示錯誤
param is missing or the value is empty: project
當我創建專案時,bug_id是空的,我只想在專案中添加bug ids,但我不知道如何解決這個問題。
專案模型
class Project < ApplicationRecord
has_many :bug。
end。
bug模型 class Bug < ApplicationRecord belongs_to :project end
bug_controller
class BugController < ApplicationController
def new
@bug = Bug.new
end
def create
parameters = bug_params.merge({ user_id: current_user.id })
@bug = Bug.new(引數)
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
end end
私人
def bug_params
params.require(:bug)。 permit(:標題, :描述, :螢屏截圖, : typeOf, :status_is, :截止日期, :user_id, :project_id )
結束。
def edit_task_params>>
params.require(:project).allow(:bug_id)
結束。
結束
uj5u.com熱心網友回復:
首先,我們需要看一下你解決問題的方法是否足夠好?
為什么Project模型需要存盤bug_id?
為了回答這個問題,我們需要思考one_to_many關系是如何運作的。
讓我們說
- 一個專案有很多個Buffer。
- 一個專案有許多 Bugs 許多 Bugs 屬于一個專案。
我想到了兩種方法
我們應該把bug存盤在一個專案中。
如何使我們的專案表看起來像
正如你所看到的,我們必須存盤bugs_ids的多個值。 因為一個專案可以有很多bug 而這種結構是不推薦的,因為它違反了第一個規范化。所以它被忽略了
現在我們轉向第二種方法
現在回到rails和你的解決方案
1- 你不需要bug_id在Project模型中,所以洗掉它。
2- 你不需要在創建bug時更新Project,所以也要洗掉這部分。
3- 你不應該在創建方法中執行更新,我想你是想這樣做。
因此,在進行了必要的修正后,你的代碼將是這樣的:
。parameters = bug_params.merge({ user_id: current_user.id })
bug = bug.new(引數)
if bug.save
format.html { redirect_to new_bug_path, flash: { success: "bug added" } }
else
format.html { render :new }
end
你可以用這種方式訪問你的bug,使用專案
。bugs = Project.find(project_id).bugs
你需要創建一個單獨的方法來更新和編輯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/307022.html
標籤:
下一篇:如何通過一個反應式路由傳遞資料

