Rails 4不允许的params错误

时间:2016-05-06 11:05:09

标签: ruby-on-rails

我在表单提交时收到此错误:

Unpermitted parameters: postal_address_type_faos

我可以确认params是否正常,但看起来像postal_address_type_faos正在删除。

这是params白名单:

    def paper_params
    params.require(:paper).permit(:status, :signature_id, :name, :code, 
         :create_user_id, :update_user_id, :created_at, :updated_at, 
        phone_numbers_attributes: [:id, :phone_type_id,  :area_code, :number, :extension, :create_user_id, :update_user_id, :created_at, :updated_at, :_destroy],
        postal_addresses_attributes: [:id, :postal_address_type_id, :country_id, :line_1,:line_2, :line_3, :city, :territory_id, :postal_zip_code,
         :address_note, :latitude, :longitude,
         :_destroy, :address_verification_status_id, :comment,
 postal_address_type_faos_attributes: [:id, :postal_address_id, :postal_address_type_id, :fao, :create_user_id, :update_user_id, :created_at, :updated_at, :_destroy]])
        end

型号:

class Paper < ActiveRecord::Base
  has_many :paper_postal_addresses
  has_many :postal_addresses, through: :paper_postal_addresses
  has_many :postal_address_type_faos, through: :postal_addresses

  accepts_nested_attributes_for :postal_addresses
  accepts_nested_attributes_for :postal_address_type_faos

  has_many :phone_number_papers
  has_many :phone_numbers, through: :phone_number_papers

  accepts_nested_attributes_for :phone_numbers, allow_destroy: true

class PaperPostalAddress < ActiveRecord::Base
  belongs_to :paper
  belongs_to :postal_address
  has_many :postal_address_type_faos, through: :postal_address

class PostalAddress < ActiveRecord::Base
  has_many :postal_address_type_faos
  has_many :postal_address_types, :through => :postal_address_type_faos

  has_many :paper_postal_addresses
  has_many :papers, through: :paper_postal_addresses


class PostalAddressTypeFao < ActiveRecord::Base
  belongs_to :postal_address_type
  belongs_to :postal_address
  has_many :paper_postal_addresses, through: :postal_address

class PostalAddressType < ActiveRecord::Base
  has_many :postal_address_type_faos
  has_many :postal_addresses, through: :postal_address_type_faos

查看地址部分的代码是这样的

<%= f.fields_for :postal_addresses do |address|%>
        //some address stuff here

        //then do address fao type stuff (index is populated but not shown here)
<%= f.fields_for :postal_address_type_faos, @paper.postal_addresses[address.index].postal_address_type_faos[index] do |fa| %>
          <%= fa.check_box :postal_address_type_id, label: fa.object.postal_address_type.name %>
           <%= fa.text_field :fao, label: fa.object.fao %>
     <% end %>

    <% end %>
帕拉姆回来了:

    {"utf8"=>"✓", "authenticity_token"=>"R8ukkukuykuk", 
    "paper"=>{"carrier_id"=>"",  "name"=>"",  "status"=>"Active","digital_id"=>"1","signature_id"=>"1", "phone_numbers_attributes"=>{"0"=>{"create_user_id"=>"1568", "phone_type_id"=>"2", "country_phone_code_id"=>"2", "area_code"=>"", 
"number"=>"", "extension"=>""}}, "postal_addresses_attributes"=>{"0"=>{"country_id"=>"", "line_1"=>"", "line_2"=>"", "line_3"=>"", "city"=>"", "territory_id"=>"", "postal_zip_code"=>"", "subterritory"=>"", "comment"=>""},
 "1"=>{"country_id"=>"", "line_1"=>"", "line_2"=>"", "line_3"=>"", "city"=>"", "territory_id"=>"", "postal_zip_code"=>"", "subterritory"=>"", "comment"=>""},
 "2"=>{"country_id"=>"", "line_1"=>"", "line_2"=>"", "line_3"=>"", "city"=>"", "territory_id"=>"", "postal_zip_code"=>"", "subterritory"=>"", "comment"=>""}},
 "postal_address_type_faos_attributes"=>{"0"=>{"postal_address_type_id"=>"1", "attention"=>""}, "1"=>{"postal_address_type_id"=>"0", "fao"=>""}, "2"=>{"postal_address_type_id"=>"0", "fao"=>""}, "3"=>{"postal_address_type_id"=>"0",
 "fao"=>""}, "4"=>{"postal_address_type_id"=>"0", "fao"=>""}}}, "area_code_required"=>"", "formaction"=>"add_address", "action"=>"create", 
"controller"=>"papers"}

1 个答案:

答案 0 :(得分:0)

只需更改

中的视图代码即可
<%= f.fields_for :postal_address_type_faos, @paper.postal_addresses[address.index].postal_address_type_faos[index] do |fa| %> 

<%= address.fields_for :postal_address_type_faos, @paper.postal_addresses[address.index].postal_address_type_faos[index] do |fa| %>