1

我试图从表单更新一些嵌套参数。我可以看到我从表单中获取的参数是正确的,但是数据库没有得到更新。

风景

<% form_for @order do |f| %>
  <% f.fields_for :itemgroups do |ff, i| %>
    <% ff.fields_for :items do |fff| %>
      <%= ff.text_field :text, :id => "textField", :disabled => true %>
      <%= ff.text_field :price, :class => "priceField", :disabled => true %>
      <%= fff.check_box :registered, :class => i %>
    <% end %>
  <% end %>
  <%= submit_tag 'Save', :disabled_with => "Saving..." %>
<% end %>

项目组类

class Itemgroup < ActiveRecord::Base
  belongs_to :order
  has_many :items, :dependent => :destroy
  has_one :kind

  accepts_nested_attributes_for :items, :kind
end

订单类

class Order < ActiveRecord::Base
  has_many :itemgroups, :dependent => :destroy
  has_many :items, :through => :itemgroups, :dependent => :destroy
  has_many :kinds, :through => :itemgroups

  accepts_nested_attributes_for :itemgroups, :allow_destroy => true

  validates_associated :itemgroups, :items ,:kinds
end

控制器的重要组成部分。

def update
  @order = Order.find(params[:id])

  if @order.update_attributes(params[:order])
    flash[:notice] = 'Order was successfully edited.'
    redirect_to(@order)
  else
    flash[:notice] = 'An error occured.'
    render(:action => :edit)
  end
end
4

2 回答 2

1

改变

<% f.fields_for :itemgroups do |ff, i| %>
  <% ff.fields_for :items do |fff| %>
    <%= ff.text_field :text, :id => "textField", :disabled => true %>
    <%= ff.text_field :price, :class => "priceField", :disabled => true %>
    <%= fff.check_box :registered, :class => i %>
  <% end %>

编辑

<% f.fields_for :itemgroups do |ff, i| %>
    <%= ff.text_field :text, :id => "textField", :disabled => true %>
    <%= ff.text_field :price, :class => "priceField", :disabled => true %>
  <% ff.fields_for :items do |fff| %>
    <%= fff.check_box :registered, :class => i %>
  <% end %>

并检查

于 2010-07-06T09:49:57.757 回答
-1

修复了问题!

class Order < ActiveRecord::Base
  has_many :itemgroups, :dependent => :destroy
  has_many :items, :through => :itemgroups, :dependent => :destroy
  has_many :kinds, :through => :itemgroups

  accepts_nested_attributes_for :itemgroups, :allow_destroy => true

  # validates_associated :itemgroups, :items ,:kinds
end

validates_associated行已被删除。然后它起作用了

于 2010-07-06T10:36:30.703 回答