2015-07-07 2 views
0

Я пытаюсь обновить вложенную ассоциацию, в которой есть 2 родителя, от одного до многихКак обновить вложенные атрибуты через контроллер из простой формы?

Компания имеет много компаний, и у пользователей также есть много компаний-пользователей.

company_users оба принадлежат компании и пользователи

это моя текущая форма

<%= 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 

я пробовал вызывать разрешенный метод как для объектов экземпляра компании, так и для пользователей, но они жалуются на незнание роли param

+0

Было ли мое решение работать? – Pavan

ответ

0

Проблема в вашем методе permitted_params. Это должно быть как показано ниже.

def permitted_params 
    params.require(:company_user).permit(:role, company_attributes: [:name], user_attributes: [:full_name]) 
end 
Смежные вопросы