Ruby on rails 4 ActionController::当我使用具有多态关联的嵌套_属性时,在StaplesController中创建未经许可的参数

Ruby on rails 4 ActionController::当我使用具有多态关联的嵌套_属性时,在StaplesController中创建未经许可的参数,ruby-on-rails-4,nested-forms,nested-attributes,polymorphic-associations,Ruby On Rails 4,Nested Forms,Nested Attributes,Polymorphic Associations,我绝望了。。。我尝试了所有可能的相关来源的建议,但没有任何帮助。我使用的是ruby 2.0.0 rails 4.1.8和嵌套形式的gem 它仍然会产生相同的错误: ActionController::在StaplesControllercreate中取消允许的参数 找到不允许的参数:cqnames 我有一本订书机: 以下是更新现有装订时产生的错误屏幕的内容: ActionController::在StaplesController更新中取消允许的参数 找到不允许的参数:cqnames 第68行周

我绝望了。。。我尝试了所有可能的相关来源的建议,但没有任何帮助。我使用的是ruby 2.0.0 rails 4.1.8和嵌套形式的gem

它仍然会产生相同的错误:

ActionController::在StaplesControllercreate中取消允许的参数 找到不允许的参数:cqnames 我有一本订书机:

以下是更新现有装订时产生的错误屏幕的内容:

ActionController::在StaplesController更新中取消允许的参数

找到不允许的参数:cqnames

第68行周围的提取源:

66 |
67 |     def staple_params
68 |         params.require(:staple).permit(:name, :description, allergen_ids: [], cqnames_attributes: [:id, :name, :language, :description, :_destroy] )
69 |     end
70 |  end
app/controllers/staples_controller.rb:68:in'staples_params' app/controllers/staples\u controller.rb:40:在“更新”中

请求

参数:

{"utf8"=>"✓",
 "_method"=>"patch",
 "authenticity_token"=>"MdufJeUWmoNdJaEeP/ReIxOY+TLthJ9yIUD9aI15Htg=",
 "staple"=>{"name"=>"Syr",
 "description"=>"Nejaká tá mliečna dobrôtka.",
 "allergen_ids"=>["1",
 "2",
 "3",
 ""],
 "cqnames_attributes"=>{"1428061910570"=>{"cqnames"=>{"name"=>"aaa",
 "language"=>"bbb",
 "description"=>"ccc",
 "_destroy"=>""}}}},  
 "commit"=>"Update Staple",  
 "locale"=>"en",  
 "id"=>"2"}
这里是模型装订的_form.html.erb:

使用cqname_fields.html.erb:


如果你知道…,请帮帮我。

对不起,各位。。。它只是在_form.html.erb和_cqname_fields.html中错误地使用了简单的_fields作为方法

正确的版本是

_form.html.erb:

和cqname_fields.html

现在一切都好了-

class Cqname < ActiveRecord::Base
  belongs_to :cqnable, polymorphic: true
end
  private
    def set_staple
      @staple = Staple.find(params[:id])
    end

    def staple_params
      params.require(:staple).permit(:name, :description, allergen_ids: [], cqnames_attributes: [:id, :name, :language, :description, :_destroy] )
    end
66 |
67 |     def staple_params
68 |         params.require(:staple).permit(:name, :description, allergen_ids: [], cqnames_attributes: [:id, :name, :language, :description, :_destroy] )
69 |     end
70 |  end
{"utf8"=>"✓",
 "_method"=>"patch",
 "authenticity_token"=>"MdufJeUWmoNdJaEeP/ReIxOY+TLthJ9yIUD9aI15Htg=",
 "staple"=>{"name"=>"Syr",
 "description"=>"Nejaká tá mliečna dobrôtka.",
 "allergen_ids"=>["1",
 "2",
 "3",
 ""],
 "cqnames_attributes"=>{"1428061910570"=>{"cqnames"=>{"name"=>"aaa",
 "language"=>"bbb",
 "description"=>"ccc",
 "_destroy"=>""}}}},  
 "commit"=>"Update Staple",  
 "locale"=>"en",  
 "id"=>"2"}
<%= simple_nested_form_for(@staple) do |f| %>
  <% if @staple.errors.any? %>
    <div id="error_explanation">
      <h2><%= t('errors.template.header', count: @staple.errors.size, model: t('activerecord.models.staple')) %></h2>

      <ul>
        <% @staple.errors.full_messages.each do |message| %>
        <li><%= message %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.input :description %>
    <%= f.association :allergens, as: :check_boxes %>
    <%= f.simple_fields_for :cqnames %>
    <div data-no-turbolink><%= f.link_to_add "Add a colloquial name", :cqnames %></div>
  </div>

  <div class="form-actions">
    <%= f.button :submit %>
  </div>
<% end %>
<fieldset>
  <legend><%= _("Colloquial Name") %></legend>
  <%= f.simple_fields_for :cqnames do |builder| %>
    <%= builder.input :name %>
    <%= builder.input :language %>
    <%= builder.input :description, as: :text %>
    <%= builder.link_to_remove "Remove this colloquial name" %>
  <% end %>
</fieldset>
  <div class="form-inputs">
    <%= f.input :name %>
    <%= f.input :description %>
    <%= f.association :allergens, as: :check_boxes %>
    <%= f.simple_fields_for :cqnames do |builder| %>
      <%= render 'cqname_fields', f: builder %>
    <% end %>
    <div data-no-turbolink><p><%= f.link_to_add "Add a colloquial name", :cqnames %></p></div>
  </div>
<fieldset>
  <legend><%= _("Colloquial Name") %></legend>
    <%= f.input :name %>
    <%= f.input :language %>
    <%= f.input :description, as: :text %>
    <%= f.link_to_remove "Remove this colloquial name" %>
</fieldset>