Ruby on rails Ruby on Rail嵌套属性不保存到数据库

Ruby on rails Ruby on Rail嵌套属性不保存到数据库,ruby-on-rails,ruby,accepts-nested-attributes,Ruby On Rails,Ruby,Accepts Nested Attributes,我正在尝试创建一个表单来更新两个表-佣金类型和佣金层 我创建了模型、控制器和表单,但当我提交时,我的佣金表不会更新。只有我的佣金类型表更新 有人能看看我的代码,告诉我我做错了什么吗?我已经仔细检查了我的代码,试图找到错误,但我找不到 我的车型 class CommissionType < ApplicationRecord has_many :commission_tiers accepts_nested_attributes_for :commission_tiers end

我正在尝试创建一个表单来更新两个表-佣金类型和佣金层

我创建了模型、控制器和表单,但当我提交时,我的佣金表不会更新。只有我的佣金类型表更新

有人能看看我的代码,告诉我我做错了什么吗?我已经仔细检查了我的代码,试图找到错误,但我找不到

我的车型

class CommissionType < ApplicationRecord
  has_many :commission_tiers
  accepts_nested_attributes_for :commission_tiers
end

很少有调试问题。你已经有了binding.pry
,1)参数2)commission\u type\u v2\u params 3)@commission\u type.commission\u层的值是多少。@BroiSatse-我清理了我的帖子。其中大部分都是我正在尝试的调试过程中的打字错误。CommissionType参数值为“[:name,:active,:allow_mass_update,:plan]”,CommissionTier参数值为“[:id,:increment_value,:rate,:commission_type_id]”,对于初学者来说,任何建议都是值得的,您甚至不必检查
@commission_type.save
是否返回true。如果用户在哪里输入无效数据,您认为会发生什么?另外,
CommissionTier.attribute\u names.map(&:to\u sym)
是一个等待发生的大规模分配漏洞。显式列出用户应该能够分配的属性,即使这意味着要多输入一点。@davidele-对,所以这些不是真正的参数,而是看起来像预期的键。你能确认这些是真的吗?通过强参数后,您能确认所有这些键都存在吗?另外,您能确认(或发布)表单的呈现html吗?CommissionTier中没有输入错误吗<代码>属于:佣金类型
应为单数形式的
属于:佣金类型
。我会在CommissionType中使用
has\u many:commission\u tiers,reverse\u of::commission\u type
——这样,将自动为嵌套模型设置commission\u type,而不再需要
optional:false
class CommissionTier < ApplicationRecord
  belongs_to :commission_types, optional: true
end
class Admin::CommissionTypesController < Admin::BaseController


  def index
    @commission_types = CommissionType.all
  end

  def new
    @commission_type = CommissionType.new
    @commission_type.commission_tiers.build
  end

def create
    @commission_type = CommissionType.new(commission_type_params)
    if @commission_type.save
      redirect_to admin_commission_types_index_path
    else
      render "new"
    end
  private

  def commission_type_params
    params.require(:commission_type).permit(:name, :active, :allow_mass_update, :plan,
                                               commission_tiers_attributes: [:id, :increment_value, :rate, :commission_type_id])
  end
end
<%= simple_form_for @commission_type, url: admin_commission_types_index_path, wrapper: :bootstrap2, :html => { :class => 'form-horizontal' } do |f| %>
      <fieldset>
        <legend>Properties</legend>
        <%= f.input :name, label: 'Commission Name' %>

        <%= f.input :active, as: :boolean, label: 'Active?', label_html: { class: 'padding-top' } %>
        <%= f.input :allow_mass_update, as: :boolean,  label: 'Allow mass update?', label_html: { class: 'padding-top' } %>
        <%= f.input :plan, input_html: {id: 'dropdown'},
                    label: 'Commission Type', 
                    collection: [ ['Select One..', 'select'], ['Flat', 'flat'], ['Flat +', 'flat_plus' ], ['Promotional', 'promotional'], ['Straight', 'straight'], ['Waterfall', 'waterfall'],  ['Sliding Scale', 'sliding_scale'] ],
                    selected: 'select'
                    %>
      </fieldset>
     
        
      <fieldset id="flat">
        <legend>Flat Commission</legend>
        <%= f.simple_fields_for :commission_tiers do |builder| %>
          <%= builder.input :rate %>
          <%= builder.input :increment_value %>
        <% end %>
      </fieldset>
<ActionController::Parameters {"name"=>"asdf", "active"=>"1", "allow_mass_update"=>"1", "plan"=>"flat", "commission_tiers_attributes"=><ActionController::Parameters {"0"=><ActionController::Parameters {"rate"=>"45"} permitted: true>} permitted: true>} permitted: true>