Nested simple_form with polymorphic association. U

2019-09-19 10:38发布

问题:

It's a lot of question about it all around, but I can't find the answer. I've:

group.rb

class Group < ActiveRecord::Base
  has_many :descriptions, :as => :describable
  accepts_nested_attributes_for :descriptions
end

description.rb

class Description < ActiveRecord::Base
  belongs_to :describable, :polymorphic => true
end

groups_controller.rb

   def update
        @group = Group.find(params[:id])
        if @group.update_attributes(group_params)
          flash[:success] = "yes"
          redirect_to groups_path
        else
          render 'edit'
        end
   end


   private

      def group_params
        params.require(:group).permit(:owner_id, :domain, descriptions_attributes: [:id, :content])
 end

edit.html.erb

<%= simple_form_for @group do |f| %>
    <% if @group[:domain].blank? %>
        <%= f.input :domain %>
    <% else %>
        <%= f.input :domain, readonly: true %>
    <% end %>
    <%= f.input :owner_id, readonly: true %>
    <%= f.simple_fields_for :descriptions do |description| %>
        <%= description.input :content %>
    <% end %>
    <%= f.button :submit %>
<% end %>

In console I've Unpermitted parameter: description and nested attribute does not created. What should I do to save it at last?

回答1:

I suppose Rails does not convert form name to names_attributes when generating form for nested polymorphic connection, this:

... description: [:content, :other_param, ...]

Works fine for me for polymorphic child.