ошибка неизвестного атрибута при отправке нескольких записей в форме с двойным вложением - PullRequest
0 голосов
/ 06 июня 2011

Я использую nested_form для ситуации, когда:

Родитель (восхождение) == has_one ==> Присоединиться к модели (route_ascent) == полиморфный has_many ==> Дети (route_step)

Итак, у меня есть объект для лазания, который выглядит как

class Climb < ActiveRecord::Base
  has_one :route_ascent
  accepts_nested_attributes_for :route_ascent
end

Вот Route Ascent

class RouteAscent < ActiveRecord::Base
  has_many :ascent_steps, :class_name => 'RouteStep', :as => :steppable
  accepts_nested_attributes_for :ascent_steps, :allow_destroy => true
end

А вот и RouteStep

class RouteStep < ActiveRecord::Base
  belongs_to :steppable, :polymorphic => true
end

В моей форме Подъема у меня есть

f.fields_for :route_ascent

Мой частичный _route_ascent_fields просто

<%= f.fields_for :ascent_steps %>
<p><%= f.link_to_add "Add A Step", :ascent_steps %></p>

И мой частичный _ascent_step_fields

<div class="field">
<%= f.label :order %>
<%= f.text_field :position %><br>
<%= f.label :description %>
<%= f.text_area :description %>
<%= f.link_to_remove "Remove Step" %>
</div>

У меня проблема в том, что всякий раз, когда я отправляю форму с более чем одним объектом в ассоциации has_many модели соединения, я получаю неизвестную ошибку атрибута. Вот как выглядят параметры, сгенерированные формой в таком случае:

"route_ascent_attributes"=>{"ascent_steps_attributes"=>{"0"=>{"position"=>"1",
 "description"=>"this will also work",
 "_destroy"=>"false",
 "id"=>"66"}},
 "0"=>{"new_1307386880995"=>{"position"=>"2",
 "description"=>"broken!",
 "_destroy"=>"false"}},
 "id"=>"4"},

Похоже, что второй объект неправильно включен в параметры, но я не смог понять, почему это так.

Проблема возникает независимо от того, начинается ассоциация has_many с объектом или нет. Так что, если он пуст, я могу успешно создать один объект, но не два. Если у него уже есть один объект, я не могу добавить секунду без этой ошибки.

Будет продолжать работать над этим, но я буду признателен за понимание того, в чем может быть проблема!

1 Ответ

0 голосов
/ 07 июня 2011

На первый взгляд кажется, что второй ascent_steps_attributes имеет тот же "идентификатор" "0", что конфликтует с первым.Если вы еще не проверили эти данные в irb, это будет хорошим местом, чтобы посмотреть, сможете ли вы создать свои объекты данных с этим вводом.

...