Обновление вложенных параметров не работает .. что не так? - PullRequest
1 голос
/ 06 июля 2010

Я пытаюсь обновить некоторые вложенные параметры из формы. Я вижу, что параметры, которые я получаю из формы, верны, но база данных не обновляется.

вид

<% 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

Ответы [ 2 ]

1 голос
/ 06 июля 2010

Измените

<% 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 %>

и отметьте

0 голосов
/ 06 июля 2010

Исправлена ​​проблема!

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 была удалена.Тогда это сработало

...