[英]Passing foreign key automatically from view to controller using HABTM models
我有两个模型,公司模型和雇员模型,它们之间有多对多的关联。
class Company < ActiveRecord::Base
has_and_belongs_to_many :employees
end
class Employee < ActiveRecord::Base
has_and_belongs_to_many :companies
end
我有一个联接表:companies_employees
class CreateCompaniesEmployeesJoin < ActiveRecord::Migration
def change
create_table :companies_employees, :id => false do |t|
t.integer "company_id"
t.integer "employee_id"
end
add_index :companies_employees, ["company_id", "employee_id"]
end
end
我有一个“公司”的“显示”视图,其中包括一个form_for添加新员工,我想通过HABTM关联将其与该公司相关联:
<%= form_for :employee, :url => employees_path do |f| %>
<p>
<%= f.label :name %>
<%= f.text_field :name, class: 'form-control' %>
</p>
<br>
<p>
<%= f.hidden_field :company_id, :value => @company.id %>
</p>
<p>
<%= f.submit "Save Employee", class: "btn btn-default" %>
</p>
<% end %>
我有一个用于Employee的控制器,通过它我想创建一个新的Employee,它将从Company Show视图中自动与Company关联:
def create
@company = Company.find(params[:company_id])
@employee = Employee.new(employee_params)
@company.employees << @employee
if @employee.save
flash[:success] = "Company Employee Added!"
redirect_to @employee
else
render 'new'
end
end
当我使用表单尝试创建新员工时,在EmployeeController中收到错误消息-“找不到没有ID的公司”
似乎我的视图无法将:company_id传递给EmployeeController中的create动作。
我搜寻了其他帖子,但似乎没有任何内容。 任何建议,不胜感激!
好的,问题似乎出在嵌套属性上。 尝试更改EmployeesController#create中的第一行:
@company = Company.find(params[:employee][:company_id])
编辑
另外,也可能更容易,您也可以像这样更改hidden_field的形式:
hidden_field_tag(:company_id, @company.id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.