导轨4:复选框用的has_many通过(Rails 4: checkboxes with a has

2019-09-01 18:52发布

我的建筑内,分配一个分配给多个雇主的应用程序。

我已经建立这些模型:

#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)添加它们这一切工作正常。 我敢肯定,我失去了一些东西,但无法弄清楚什么。

提前致谢。

Answer 1:

你可能会得到一个Unpermitted parameters:由于rails4强参数(@埃米尔- kampp提到这一点)在你的日志后,一个新的轨道产生,它们在你的控制器产生。 因此,使用你的代码,它看起来是这样的:

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

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

也看到这个问题的SO满足此。 希望这样可以节省别人几个周期。



文章来源: Rails 4: checkboxes with a has_many through