我正在构建一个必须为多个雇主分配作业的应用程序。
我已经建立了这些模型:
#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_id,我尝试发送创建分配但不在employees_assignment表中创建记录的表单。 当我通过控制台添加它们时(Assignment.last.employers&lt;&lt; Employer.all )一切正常。我确定我错过了一些但却无法弄明白的东西。
提前致谢。
答案 0 :(得分:9)
由于rails4中的强参数(@ emil-kampp提到这一点),你的日志中可能会得到Unpermitted parameters:
,在生成新轨道后,它们会在你的控制器中生成。所以使用你的代码看起来像是:
class EmployersController < ApplicationController
# <snip>
def update
@employer.update(employer_params)
end
def employer_params
params.require(:employer).permit(:name, { :employer_ids => [] })
end
end
另见SO上的Question可以解答这个问题。希望这可以节省几个周期。