【问题标题】:Mass-assign protected attributes (Nested-form) Ruby/Rails批量分配受保护的属性(嵌套形式)Ruby/Rails
【发布时间】:2012-06-26 03:09:07
【问题描述】:

我正在尝试创建嵌套表单,但在尝试分配参数时出现此错误。我读了一堆类似的帖子,但无法弄清楚问题所在。有什么问题?

Can't mass-assign protected attributes: detalle_poliza

我的模型:

poliza_contable.rb

class PolizaContable < ActiveRecord::Base 
has_many :detalle_polizas
accepts_nested_attributes_for :detalle_polizas
  attr_accessible :concepto_poliza, :estatus, :fecha_aplicacion, :fecha_poliza, :no_poliza, :tipo, :tota_de_cargos, :total_de_abonos
end

detelle_poliza.rb

class DetallePoliza < ActiveRecord::Base
      belongs_to :cuenta_contable
      belongs_to :poliza_contable 
      attr_accessible :abono, :cargo,:cuenta_contable_id, :poliza_contable_id, :user_id, :id, :updated_at, :created_at
    end

我的表格:

<%= form_for @poliza_contable, :html => { :class => 'form-horizontal' } do |f| %>
## OTHER FIELDS

<%= f.fields_for :detalle_poliza_attributes  do |builder| %>
   <% render :partial => "detalle_polizas/form", :locals => { :f => builder } %>
   <% end %>

<% end %>

呈现形式:

  <div class="control-group">
    <%= f.label :cargo, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :cargo, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :abono, :class => 'control-label' %>
    <div class="controls">
      <%= f.text_field :abono, :class => 'text_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :poliza_contable_id, :class => 'control-label' %>
    <div class="controls">
      <%= f.number_field :poliza_contable_id, :class => 'number_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :cuenta_contable_id, :class => 'control-label' %>
    <div class="controls">
      <%= f.number_field :cuenta_contable_id, :class => 'number_field' %>
    </div>
  </div>
  <div class="control-group">
    <%= f.label :user_id, :class => 'control-label' %>
    <div class="controls">
      <%= f.number_field :user_id, :class => 'number_field' %>
    </div>
  </div>

请求参数:

{"utf8"=>"✓",
 "authenticity_token"=>"mI23Nnj4oPX+IW3mCvvIV7Auij+pjX/a7bl/HsudEW8=",
 "poliza_contable"=>{"tipo"=>"Diario",
 "concepto_poliza"=>"",
 "fecha_poliza"=>"2012-06-25",
 "detalle_poliza"=>{"cargo"=>"34",
 "abono"=>"34",
 "poliza_contable_id"=>"34",
 "cuenta_contable_id"=>"34",
 "user_id"=>"1"}}
 "commit"=>"Create Poliza contable"}`

我会很感激任何评论来解决它。

【问题讨论】:

    标签: ruby-on-rails ruby forms nested-forms


    【解决方案1】:

    根据railscast 196 Nested Model Form Part 1,您需要允许将 DetallePoliza 属性与父级一起保存。要实现这个目标,只需将 attr_accessible :detalle_polizas_attributes 添加到 PolizaContable 模型中:

    poliza_contable.rb

    class PolizaContable < ActiveRecord::Base 
      has_many :detalle_polizas
      accepts_nested_attributes_for :detalle_polizas
      attr_accessible :concepto_poliza, :estatus, :fecha_aplicacion, :fecha_poliza, :no_poliza, :tipo, :tota_de_cargos, :total_de_abonos, :detalle_polizas_attributes
    end
    

    【讨论】:

    • 我已经添加了它,但仍然出现错误。感谢您的点评!但我仍然想念别的东西。
    【解决方案2】:

    刚刚研究了一下,终于找到了nestes_form gem

    这是一个非常直接的实现!

    希望对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2012-10-25
      • 2012-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多