Ruby on 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

我正在Rails 6上创建一个教室系统。我与单位和任务有多对多的关系。我试图在作业中创建一个表格,其中作业表格中选择了一个单位(这是一个多对多的单位,因为我可能最终会将其设置为一个选择的多个单位)。现在它可以正常工作,没有错误,但是当我进入rails控制台时,在提交表单之后,每个任务都不会得到任何单位

#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设置断点并检查赋值参数。