Ruby on rails 如何从简单表单通过控制器更新嵌套属性?
我正在尝试更新一个嵌套关联,它有两个父对象,都是一对多 公司有很多公司用户,用户也有很多公司用户 公司用户既属于公司,也属于用户 这是我目前的表格Ruby on rails 如何从简单表单通过控制器更新嵌套属性?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在尝试更新一个嵌套关联,它有两个父对象,都是一对多 公司有很多公司用户,用户也有很多公司用户 公司用户既属于公司,也属于用户 这是我目前的表格 <%= simple_form_for([:admin, @company_user], url: @company_user.new_record? ? admin_company_users_path : admin_company_user_path) do |f| %> <div class="row-fluid">
<%= simple_form_for([:admin, @company_user], url: @company_user.new_record? ? admin_company_users_path : admin_company_user_path) do |f| %>
<div class="row-fluid">
<div class="span4 columns">
<%= render partial: "admin/layouts/form_errors", locals: {instance: @company_user} %>
<div class="actions">
<%= f.simple_fields_for(@company) do |p| %>
<%= p.input :name %>
<% end %>
<%= f.simple_fields_for(@user) do |s| %>
<%= s.input :full_name %>
<% end %>
<%= f.input :role %>
<%= f.submit class: "submit" %>
</div>
</div>
<% end %>
这些字段正确地显示了全名和名称,但是当我点击更新按钮时,什么也没有发生
这是我的控制器
module Admin
class CompanyUsersController < BaseController
before_action :load_company_user, only: [:edit, :update, :destroy]
respond_to :html
def index
@company_users = CompanyUser.includes(:user, :company).page(params[:page])
end
def edit
end
def update
flash[:notice] = 'Company User was successfully updated.' if @company_user.update(permitted_params)
respond_with @company_user, location: admin_company_users_url
end
def destroy
@company_user.destroy
respond_with @company_user, location: admin_company_users_url
end
def load_company_user
@company_user = CompanyUser.find(params[:id])
@company = @company_user.company
@user = @company_user.user
end
def permitted_params
params.require(:company_user).permit(:role, pets_attributes: [:full_name,:name])
end
end
end
我尝试在company和user实例对象上调用允许的方法,但他们抱怨不知道角色参数。问题在于允许的参数方法。它应该像下面这样
def permitted_params
params.require(:company_user).permit(:role, company_attributes: [:name], user_attributes: [:full_name])
end
我的解决方案有效吗?