选择字段以在更新时创建或更新has_many记录

时间:2019-05-16 17:41:11

标签: ruby-on-rails forms multi-select

我希望有一个简单的选择字段,该字段允许用户选择一些要加入工作团队的用户。

#jobs.rb
class Job < ApplicationRecord
 has_many :team_members
end

#jobs_controller.rb
class JobsController < ApplicationController
  def update
    @job = Job.find(params[:id])
    if @job.update_attributes(job_params)
      flash[:notice] = "Job Saved"
      redirect_to job_path(@job)
    else
      flash[:alert] = "Job Not Saved"
      render :edit
    end
  end

  private
  def job_params
     params.require(:job).permit(     
     team_member_ids: []

    )
   end
end

# jobs/edit.html.erb
<%= f.select :team_member_ids, User.all, {:include_blank => "None"},{ :multiple => true} %>

这给我一个错误

找不到ID为117、23、30的TeamMembers。

我在这里错过了一些简单的东西吗?还是以错误的方式管理表单中的数据?

更新,参数哈希:

{"utf8"=>"✓",
 "_method"=>"patch",
 "authenticity_token"=>"xxxx",
 "job"=>
  {
   "jobtype"=>"Cutting",
   "status"=>"Not_Started",   
   "team_member_ids"=>["", "117", "23", "30"]},
 "commit"=>"Update Job",
 "id"=>"84"}

1 个答案:

答案 0 :(得分:0)

糟糕,这有点愚蠢。

ID是用户ID,但是我将它们作为team_member ID传递。其中team_member是联接表。 修复为:

failonerror="true"