5

我正在构建一个应用程序,该应用程序必须将任务分配给多个雇主。

我已经建立了这些模型:

#assignment.rb
class Assignment < ActiveRecord::Base
    has_many :employer_assignments
    has_many :employers, :through => :employer_assignments
end

#employer.rb
class Employer < ActiveRecord::Base
    has_many :employer_assignments
    has_many :assignments, :through => :employer_assignments
end

#employer_assignment.rb
class EmployerAssignment < ActiveRecord::Base
    belongs_to :employer
    belongs_to :assignment
end

现在我希望将表单保存到employer_assignment 表中,但是我用于表单的以下代码不起作用。

<div class="field">
    <%= f.label :employer_ids %><br />
    <%= collection_check_boxes(:assignment, :employer_ids, Employer.all, :id, :name) %>
</div>

我确实将 :employer_ids 添加到我的分配控制器中,我尝试从该控制器发送创建分配但未在employer_assignment 表中创建记录的表单。当我通过控制台( Assignment.last.employers << Employer.all )添加它们时,一切正常。我确定我错过了一些东西,但不知道是什么。

提前致谢。

4

1 回答 1

8

由于 rails4 中的强参数(@emil-kampp 提到了这一点),您可能会Unpermitted parameters:在日志中得到一个新的 rails 生成后,它们会在您的控制器中生成。所以使用你的代码它看起来像:

class EmployersController < ApplicationController
  # <snip>
  def update
    @employer.update(employer_params)
  end

  def employer_params
    params.require(:employer).permit(:name, { :employer_ids => [] })
  end
end

另请参阅SO 上的这个问题,它回答了这个问题。希望这可以为某人节省几个周期。

于 2013-09-16T22:17:22.563 回答