У меня есть 2 модели собаки и litter_field:Nested_form has_one ассоциация
class Dog < ActiveRecord::Base
belongs_to :user
has_one :litter_field
accepts_nested_attributes_for :litter_field
attr_accessible :litter_field_attributes
end
class LitterField < ActiveRecord::Base
belongs_to :dog
attr_accessible :breed_type
end
В мой контроллер у меня есть:
class DogsController < ApplicationController
def edit
@dog = Dog.find(params[:id])
@dog.build_litter_field
end
И на мой взгляд, у меня есть:
<%= simple_form_for @dog do |f| %>
<%= f.fields_for :litter_field do |l| %>
<div>
<%= l.label :breed_type %>
<%= l.input_field :breed_type %>
</div>
<%= f.button :submit, "Save" %>
<% end %>
Я просмотрел документацию, и я могу сказать, что это должно работать, однако его страница не находится на главной странице редактирования, которую я предполагаю, где проблема. Должен ли я добавлять то, что находится в действии редактирования, к новому действию, которое отображает форму редактирования litter_field?
EDIT:
То, что я пытаюсь сделать, это разделить форму редактирования на отдельные страницы, я сделал это, добавляя дополнительные действия, которые делают дополнительные страницы, так что пользователь будет идти на собак/настройки/подстилки для пример, чтобы увидеть вложенную форму litter_field. Я попытался добавить @ dog.build_litter_field к действию помета, который отображает поля, но когда я пытаюсь и сохранить форму я получаю сообщение об ошибке:
Failed to remove the existing associated litter_field. The record failed to save when after its foreign key was set to nil.
EDIT 2:
Установленный выше с добавлением :
has_one :litter_field, :dependent => :destroy
accepts_nested_attributes_for :litter_field, update_only: true
Для dog.rb единственная проблема, с которой я столкнулся сейчас, это не отображать сохраненное значение при редактировании.
К сожалению, ваше решение не сработало, я думаю, что сейчас я просто поставлю все в одной таблице, пока не узнаю больше, чтобы решить эту проблему. Спасибо за вашу помощь. – andybritton
Когда вы говорите, что это не сработало, что вы видели? После того как вы сохранили данные в своем вложенном состоянии, вы можете увидеть информацию о собаке и litter_field в своей базе данных? Когда вы вернетесь в форму редактирования, вы увидите данные о собаке или litter_field? – cschroed