Lau*_*ens 5 has-many-through ruby-on-rails-4
我正在构建一个必须为多个雇主分配作业的应用程序.
我已经构建了这些模型:
#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
Run Code Online (Sandbox Code Playgroud)
现在我希望表单保存到employer_assignment表,但我用于表单的以下代码不起作用.
<div class="field">
<%= f.label :employer_ids %><br />
<%= collection_check_boxes(:assignment, :employer_ids, Employer.all, :id, :name) %>
</div>
Run Code Online (Sandbox Code Playgroud)
我确实在我的赋值控制器中添加了:employer_id,我尝试发送创建赋值的表单但不在employees_assignment表中创建记录.当我通过控制台添加它们(Assignment.last.employers << Employer.all)时,一切正常.我确定我错过了一些但却无法弄明白的东西.
提前致谢.
Unpermitted parameters:由于rails4中的强参数(@ emil-kampp提到了这一点),你可能会在日志中获得一个,在生成新的rails之后,它们会在你的控制器中生成.所以使用你的代码看起来像:
class EmployersController < ApplicationController
# <snip>
def update
@employer.update(employer_params)
end
def employer_params
params.require(:employer).permit(:name, { :employer_ids => [] })
end
end
Run Code Online (Sandbox Code Playgroud)
另请参阅SO上的这个问题.希望这能节省几个周期.
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |