Ruby on rails 为什么我的多对多收藏没有通过?
我正在Rails 6上创建一个教室系统。我与单位和任务有多对多的关系。我试图在作业中创建一个表格,其中作业表格中选择了一个单位(这是一个多对多的单位,因为我可能最终会将其设置为一个选择的多个单位)。现在它可以正常工作,没有错误,但是当我进入rails控制台时,在提交表单之后,每个任务都不会得到任何单位Ruby on rails 为什么我的多对多收藏没有通过?,ruby-on-rails,many-to-many,Ruby On Rails,Many To Many,我正在Rails 6上创建一个教室系统。我与单位和任务有多对多的关系。我试图在作业中创建一个表格,其中作业表格中选择了一个单位(这是一个多对多的单位,因为我可能最终会将其设置为一个选择的多个单位)。现在它可以正常工作,没有错误,但是当我进入rails控制台时,在提交表单之后,每个任务都不会得到任何单位 #Assignments Controller class AssignmentsController < ApplicationController def new
#Assignments Controller
class AssignmentsController < ApplicationController
def new
@assignment = Assignment.new
end
def create
@assignment = Assignment.new(assignment_params)
@assignment.save
if @assignment.save
flash[:success] = "The unit was successfully submitted."
redirect_to units_path
else
render 'new'
end
end
def show
end
private
def assignment_params
params.require(:assignment).permit(:name, :description, :duedate, unit_ids: [])
end
end
#分配控制器
类赋值控制器<应用程序控制器
def新
@assignment=assignment.new
结束
def创建
@赋值=赋值。新建(赋值参数)
@赋值保存
如果@assignment.save
flash[:success]=“该单元已成功提交。”
重定向到单位路径
其他的
呈现“新”
结束
结束
def秀
结束
私有的
def分配参数
参数require(:assignment).permit(:name,:description,:duedate,unit_id:[]))
结束
结束
这是我在下面选择的集合
#form
<%= form_for(@assignment, :html => {class: "form-horizontal", role: "form"}) do |f| %>
<div class="form-group">
<div>
<%= collection_select(:assignment, :unit_ids, Unit.all, :id, :name, placeholder: "Units" )%>
</div>
<div>
<%= f.text_field :name, class:"form-control", placeholder: "Title of Assignment", autofocus: true %>
</div>
<div>
<%= f.text_area :description, class:"form-control materialize-textarea", placeholder: "Assignment Description", autofocus: true %>
</div>
<div>
<%= f.text_field :duedate, class: "datepicker", placeholder: "Due Date"%>
</div>
<div class="form-group" id="submitbutton">
<div align = "center">
<%= f.submit class: "btn waves-effect waves-light" %>
</div>
</div>
</div>
<%end%>
#表单
{类:“形式水平”,角色:“形式”})do | f |%>
分配模型
class Assignment < ApplicationRecord
has_and_belongs_to_many :units
has_many :users, :through => :units
end
类分配:单位
结束
单元模型
class Unit < ApplicationRecord
has_and_belongs_to_many :users
has_and_belongs_to_many :assignments
end
类单位
如果需要更多的代码,请告诉我。这与实际情况无关,但您正在调用
@assignment。请连续保存两次f.collection\u select(:unit\u id,unit.all,:id,:name,placeholder:“Units”)
,因为这将把输入绑定到表单包装的模型。否则,即使在更新记录时,输入也将始终显示所有单位。我是?调用if@assignment.save是否也会保存它本身,而不仅仅是检查它是否已保存?嗯……我正在通过我的课程学习rails,这是他们教我的方法,但是如果我叫它两次,那真的很好知道!第二次,它将返回真的,因为记录没有新的变化,但它不是多余的和令人困惑的。作为一个经验开发者,这让我想知道到底发生了什么。这里没有什么明显的错误。查看rails日志中的传入参数,尝试使用byebug或pry设置断点并检查赋值参数。